Backup

如何使用 mysqldump 創建只讀 MySQL 使用者以進行備份?

  • February 7, 2020

我正在使用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

我做錯了嗎?我的只讀使用者是否需要額外的授權?還是只能rootinformation_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_schemaDBEXCLUDE腳本的第 76 行。

這些權限應該是 mysqldump 所需的全部。

由於您已授予 LOCK TABLES,並且在 LOCK TABLES 上出錯,因此權限似乎不一致。你跑過FLUSH PRIVILEGES嗎?

引用自:https://serverfault.com/questions/244072