dra*_*ool 5 mysql mysqldump backup mysql-5.5
我运行以下命令来创建一个 mysqldump
mysqldump -ubackup -psomething --single-transaction --quick somedatabase | gzip > 4_19.gz
Run Code Online (Sandbox Code Playgroud)
在创建转储的 60%(估计 zip 文件的检查大小)后,我收到以下错误:
mysqldump: Couldn't execute 'show table status like 'customer\_cohort\_paid'': SELECT command denied to user ''@'%' for column 'customer_id' in table 'sales_order' (1143)
Run Code Online (Sandbox Code Playgroud)
它谈到了一个空白用户的权限问题user ''@'%'
。此外,grants
对于backup
用户如下:
mysql> show grants for 'backup'@'%';
+------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for backup@% |
+------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER ON *.* TO 'backup'@'%' IDENTIFIED BY PASSWORD '*SOMETHING' |
+------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
有关于此的错误报告:mysqldump: 无法执行 'show table status': SELECT command denied to user。令人惊讶的是,这根本不是错误。原因如下:
customer_cohort_paid might
成为一种看法。任何用户创建的视图都不再列在mysql.user
. 这样做是使这样的视图无法被倾倒。
你可以做两(2)件事之一
强制转储 -f
mysqldump -f -ubackup -psomething --single-transaction --quick somedatabase | gzip > 4_19.gz
Run Code Online (Sandbox Code Playgroud)
如果您可以强制转储使视图出现在转储文件中,您可能需要对其进行编辑(请参阅我的旧帖子Modify DEFINER on Many Views或其他一个How do I change the DEFINER of a VIEW in Mysql?)
警告:如果任何一个扩展 INSERT 命令有语法问题或不正确地转义或封装数据,则可能无法加载该 INSERT 中的数百行。
找出创建视图的原始用户,并重新创建该用户
运行此查询: select * from mysql.tables_priv;
这将显示所有表级和列级授权。查看前三列并找出再次创建该用户的 GRANT 命令。
归档时间: |
|
查看次数: |
22010 次 |
最近记录: |