如何使用mysqldump创build一个只读MySQL用户进行备份?

我正在使用automysqlbackup脚本来转储我的MySQL数据库,但我想有一个只读的用户做到这一点,以便我不存储我的根数据库密码在纯文本文件。

我创build了一个这样的用户:

 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 

我做错了吗? 我的只读用户需要额外的补助吗? 或者只能lockinginformation_schema表? 这是怎么回事?

编辑:

GAH,现在它工作。 我以前可能没有运行FLUSH PRIVILEGES。

另外,这种情况多久会自动发生?

编辑:

不,它不工作。 手动运行mysqldump -u username -p --all-databases > dump.sql不会生成错误,但不会转储information_schema。 automysqlbackup确实会引发错误。

    这些权限应该是mysqldump所需要的。

    既然你已经授予了LOCK TABLES,并且在LOCK TABLES上出现错误,似乎权限是不一致的。 你有没有运行FLUSH PRIVILEGES

    糟糕…从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的转储执行一些额外的检查。

    不确定它是哪一个,但与用户授权无关。

    编辑

    是的,这是一个在automysqlbackup 2.5.1版本(在Ubuntu 10.04下使用MySQL 5.1.41)的错误 – 当它不应该时,它会尝试备份information_schema

    FIX:将information_schema添加到脚本的第76行上的DBEXCLUDE