原本用 mysqldump 備份 MySQL 一直沒有問題, 但近日在一台新主機上用 mysqldump 備份所有資庫時, 出現以下錯誤:
mysqldump: Got error: 1044: Access denied for user ‘root’@’localhost’ to database ‘information_schema’ when using LOCK TABLES
我也肯定輸入的 MySQL 密碼沒有問題, 因為已經將登入資儲存, 而且其他資料庫也可以成功匯出, 解決方法有以下兩個:
1. 加入 –-single-transaction 參數
只要在執行 mysqldump 時加入 -–single-transaction 參數, 便不會出現錯誤, 例如:
1 |
$ mysqldump --single-transaction -u root -p db_name > mysql-backup.sql |
這樣便不會報錯.
2. 加入 LOCK TABLES 權限:
先連接到 MySQL:
$ mysql -u root -p
輸入以下指令:
1 |
mysql> GRANT SELECT,LOCK TABLES ON db_name.* TO 'username'@'localhost'; |