mysqldump 連線至 Amazon RDS for MySQL 時出現 1045 的錯誤該這麼辦!

突然之間, AWS 上的 Ubuntu Linux EC2 實例執行用來定期備份 Amazon RDS for MySQL 資料庫的 mysqldump 指令時發生錯誤,錯誤的訊息是 “mysqldump: Couldn’t execute ‘FLUSH TABLES WITH READ LOCK’: Access denied for user ‘user’@’%’ (using password: YES) (1045)” 。說實在的,自己實在不知道是甚麼原因,不過 AWS 自己倒是有說原因何在! 不管怎樣山不轉人轉,這種問題實在是不值得花時間去仔細深究問題的真正原因,這裡記錄自己的快解,給碰到相同問題的人做為參考。

解決方案

很快說一下兩種解決方案。

第一個是將 AWS EC2 上的備份指令,移到本地使用 macOS 或 Microsoft Windows 上的 mysqldump 工具來備份,不過這個方案因為牽涉到備份的資料是透過 Internet ,可能會有傳輸效率與安全性的疑慮,要小心是否是在安全的通道上進行。

第二個是將 Ubuntu Linux EC2 上的 MySQL 官方提供之 mysqldump ,將其替換成 MariaDB 官方提供的 mysqldump ,就可以避開這個問題,替換方式:

sudo apt remove mysql-client -y && sudo apt install mariadb-client -y

參考資料

發佈留言

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料