mysqldump 错误锁定表

mysqldump 错误锁定表

当我执行 mysqldump 时出现以下错误:

mysqldump -u root -ppassword --databases information_schema > test.sql
mysqldump: Got error: 1044: Access denied for user 'root'@'localhost' to database 'information_schema' when using LOCK TABLES

我怎样才能解决这个问题?

答案1

我必须添加 --single-transaction

根据 MySQL 手册,如果您使用 InnoDB 或 BDB,此选项仅保证一致的备份。与 MyISAM 和 Heap 不同,它们支持事务。

答案2

如果您必须转储 information_schema 数据库,则向其中添加 --skip-lock-tables。

mysqldump 默认不转储 INFORMATION_SCHEMA 数据库。从 MySQL 5.1.38 开始,如果您在命令行中明确指定 INFORMATION_SCHEMA,mysqldump 会转储它,尽管目前您还必须使用 --skip-lock-tables 选项。在 5.1.38 之前,即使您在命令行中明确指定 INFORMATION_SCHEMA,mysqldump 也会默默忽略它。

http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html

答案3

昨天遇到了同样的问题。

数据库是从其他服务器迁移过来的,当我们删除一些用户时,VIEW 中没有 DEFINER,这就导致了问题。

当使用用户授予 SELECT、LOCK TABLES 权限转储时,它不会显示正确的错误,但在 root 用户下会显示正确的错误。

相关内容