作为mysql根用户,我在运行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。
我已经建立了一个系统,它的目的是生成我们生产数据的增量转储到我们的数据仓库。从这个意义上说,“增量”意味着我们可以每分钟与我们的数据仓库“同步”生产数据库,而不必生成一个完整的转储。相反,我们只是转储和插入新的/更改的数据。
在复制保存中,我已经建立了一个系统,其中生产数据库的每个相关表都有一个插入TRIGGER和一个更新TRIGGER。这些复制插入或更新到不同架构中的“审核表”中的每一行。此审计模式包含与生产表具有相同结构的表,但不包含索引,通过使用这些TRIGGER,审计表将只包含上次导出后的新行或更新行。
目前,我正在使用mysql命令行客户端对每个审计表执行以下操作:
LOCK T
我正在使用automysqlbackup脚本来转储mysql数据库,但我希望有一个只读用户来完成此操作,这样我就不会将我的根数据库密码存储在明文文件中。
我创建了一个这样的用户:
grant select, lock tables on *.* to 'username'@'localhost' identified by 'password';
当我运行mysqldump (无论是通过automysqlbackup还是直接运行)时,我会收到以下警告:
mysqldump: Got error: 1044: Access denied for u
我不知道如何对具有where条件的特定表执行mysqldump。这是我的指示:
mysqldump --user=... --password=... --host=... DB_NAME user --where "name not in ('root', 'root2')",customer --where "customer_name not in ('root', 'root2')" >dump.sql
我收到这个错误:
mysqldump:无法执行'SELECT /*!40
我们经常会得到错误SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock; try restarting transaction。一些网站显示了一种解决方案,只需使用try/catch重试,例如。我现在的问题是:表设计在多大程度上导致了这种死锁的发生?我对下面的例子特别感兴趣。
Table A
- id (int, primary key)
- a (int, foreign key -- references B.a)
- b (int, foreign key -