我在以 mysql root 用户身份运行时遇到问题mysqldump
。当我尝试备份mysql
表时,出现此错误:
mysqldump: Got error: 1142: SELECT,LOCK TABL command denied to user
'root'@'localhost' for table 'cond_instances' when using LOCK TABLES
有人见过吗?我看到有人提到我的 mysql 和 mysqldump 是不同的版本,但是当我运行它们时,它们位于同一目录中。
我正在运行 MySQL 5.5.8。
答案1
将 --skip-add-locks 添加到您的 mysqldump 命令
答案2
--skip-add-locks 不起作用:
# mysqldump -u root -p`cat mysqlRoot.txt` --databases performance_schema --routines --quote-names --skip-add-locks > mysql_performance_schema
mysqldump: Got error: 1142: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'cond_instances' when using LOCK TABLES
你想要 --skip-lock-tables
答案3
(我意识到这已经晚了 8 个月)
这不是锁的问题,提供的解决方案仅仅绕过了真正的问题:
A5.5 mysqldumpperformance_schema
应用程序首先不应该导出数据库。
根据我以前的经验,我认为mysqldump
你使用的程序是5.1版本。如何辨别?问题:
mysqldump --version
A5.1客户端不知道“未来”的存在performance_schema
,因此试图转储它。它不知道它不应该这样做。
尝试找到5.5版本,并将其用于转储,而不添加建议的锁,这样应该可以很好地工作。
答案4
正如 Shlomi Noach 所提到的,performance_schema 不应该被备份。
解决此问题的简单方法是在配置文件中设置以下内容:
CONFIG_db_exclude=( 'performance_schema' 'information_schema' )