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