bbigras Asked: 2014-04-11 13:35:34 +0800 CST2014-04-11 13:35:34 +0800 CST 2014-04-11 13:35:34 +0800 CST 是否可以删除 MySQL 中无用的 GRANTS 772 我正在使用pt-show-grants在新服务器上创建我所有的 GRANTS,但是有很多旧的 GRANTS 引用不再存在的表,所以当我尝试在新服务器上应用 SQL 文件时出现错误. 有没有办法删除引用不再存在的表的 GRANTS? mysql percona-tools 2 个回答 Voted Best Answer Bill Karwin 2014-04-11T14:15:40+08:002014-04-11T14:15:40+08:00 我在 pt-show-grants 中看不到任何选项来进行这种限制。有针对特定用户的选项--only,--ignore但没有表格。也没有自动选项来忽略对不存在的表的授权。 我还浏览了代码,它似乎没有出于任何原因分解表格来扫描它们。 对于它的价值,当我尝试授予一个不存在的表时,我没有看到任何错误。我在 Percona Server 5.6.16 上测试过: mysql> grant all on test.nonexist to 'user'@'%'; Query OK, 0 rows affected (0.00 sec) $ pt-show-grants . . . GRANT ALL PRIVILEGES ON `test`.`nonexist` TO 'user'@'%'; 您能否告诉我有关您的 MySQL 版本的其他信息以及在您尝试运行该授权脚本时它产生的特定错误? 回复您的评论: 根据Bug #10406 Grant all command does not give error though table does not exist ,ALL PRIVILEGES 和特定权限之间的区别似乎是故意的。 如果你使用GRANT CREATE, SELECT ... ON test.notexist TO 'user'@'%'那么这有效。只要您包含CREATE特权,那么它就允许授予不存在的表。 无论如何,这是有趣的琐事,但它并没有解决您最初的问题。 以前有人提出过这个要求,但从未实施过。它在此处被记录为“蓝图”(如功能请求):https ://blueprints.launchpad.net/percona-toolkit/+spec/pt-show-grants-for-nonexistent-tables 也许有人愿意实施补丁并将其贡献给 Percona Toolkit? Andrew 2019-06-04T16:12:15+08:002019-06-04T16:12:15+08:00 我也有同样的问题。从 CloudSQL 转储数据并将其加载到 AWS Aurora 实例中。数据似乎是正确的,但包括对不再存在的表的大量遗留赠款。显然这现在是一个错误。我的解决方案是遍历输出并注释掉遗留赠款。可怕的手动方法,但它让我畅通无阻。:(
我在 pt-show-grants 中看不到任何选项来进行这种限制。有针对特定用户的选项
--only
,--ignore
但没有表格。也没有自动选项来忽略对不存在的表的授权。我还浏览了代码,它似乎没有出于任何原因分解表格来扫描它们。
对于它的价值,当我尝试授予一个不存在的表时,我没有看到任何错误。我在 Percona Server 5.6.16 上测试过:
您能否告诉我有关您的 MySQL 版本的其他信息以及在您尝试运行该授权脚本时它产生的特定错误?
回复您的评论:
根据Bug #10406 Grant all command does not give error though table does not exist ,ALL PRIVILEGES 和特定权限之间的区别似乎是故意的。
如果你使用
GRANT CREATE, SELECT ... ON test.notexist TO 'user'@'%'
那么这有效。只要您包含CREATE
特权,那么它就允许授予不存在的表。无论如何,这是有趣的琐事,但它并没有解决您最初的问题。
以前有人提出过这个要求,但从未实施过。它在此处被记录为“蓝图”(如功能请求):https ://blueprints.launchpad.net/percona-toolkit/+spec/pt-show-grants-for-nonexistent-tables
也许有人愿意实施补丁并将其贡献给 Percona Toolkit?
我也有同样的问题。从 CloudSQL 转储数据并将其加载到 AWS Aurora 实例中。数据似乎是正确的,但包括对不再存在的表的大量遗留赠款。显然这现在是一个错误。我的解决方案是遍历输出并注释掉遗留赠款。可怕的手动方法,但它让我畅通无阻。:(