Backup
如何使用 mysqldump 創建只讀 MySQL 使用者以進行備份?
我正在使用
automysqlbackup
腳本轉儲我的 mysql 數據庫,但我希望有一個只讀使用者來執行此操作,這樣我就不會將我的根數據庫密碼儲存在純文字文件中。我創建了一個這樣的使用者:
grant select, lock tables on *.* to 'username'@'localhost' identified by 'password';
當我
mysqldump
(通過automysqlbackup
或直接)執行時,我收到以下警告:mysqldump: Got error: 1044: Access denied for user 'username'@'localhost' to database 'information_schema' when using LOCK TABLES
我做錯了嗎?我的只讀使用者是否需要額外的授權?還是只能
root
鎖information_schema
表?這是怎麼回事?編輯:
GAH,現在它可以工作了。我以前可能沒有執行 FLUSH PRIVILEGES。
順便說一句,這種情況多久自動發生一次?
編輯:
不,它不起作用。手動執行
mysqldump -u username -p --all-databases > dump.sql
不會產生錯誤,但不會轉儲 information_schema。automysqlbackup
確實會引發錯誤。
糟糕…來自手冊頁
mysqldump
:mysqldump does not dump the INFORMATION_SCHEMA database. If you name that database explicitly on the command line, mysqldump silently ignores it
似乎手冊頁已過期(並且確實會發出警告),或者
automysqlbackup
正在對information_schema
.不確定它是哪個,但它與使用者授權無關。
編輯
是的,這是 2.5.1 版中的一個錯誤(在 Ubuntu 10.04 下使用 MySQL 5.1.41)——它會在不應該備份的時候
automysqlbackup
嘗試備份。information_schema
修復:添加
information_schema
到DBEXCLUDE
腳本的第 76 行。
這些權限應該是 mysqldump 所需的全部。
由於您已授予 LOCK TABLES,並且在 LOCK TABLES 上出錯,因此權限似乎不一致。你跑過
FLUSH PRIVILEGES
嗎?