如何重建/重新填充mysql.db表?

如何重建/重新填充mysql.db表?,mysql,database,mysql-management,Mysql,Database,Mysql Management,因此,我的任务是将两个相似但完全不同的数据库合并在一起,由多个数据库组成(小写d)。在此过程中,我还将从两个数据库中删除旧数据库。我已经将它们设置为具有相同的用户权限,所以这不会成为问题。但我注意到,mysql.db表可能存在问题。当我在两台实验室机器上编写和执行脚本时,我注意到mysql.db列仍然显示我在db列中删除的旧数据库。在我在生产中实现这一点之前,有什么建议吗 到目前为止,我已经尝试重新启动mysql守护程序,截断表并重新启动守护程序,修复表。。。这些都不起作用 谷歌帮不了什么忙,搜

因此,我的任务是将两个相似但完全不同的数据库合并在一起,由多个数据库组成(小写d)。在此过程中,我还将从两个数据库中删除旧数据库。我已经将它们设置为具有相同的用户权限,所以这不会成为问题。但我注意到,mysql.db表可能存在问题。当我在两台实验室机器上编写和执行脚本时,我注意到mysql.db列仍然显示我在db列中删除的旧数据库。在我在生产中实现这一点之前,有什么建议吗

到目前为止,我已经尝试重新启动mysql守护程序,截断表并重新启动守护程序,修复表。。。这些都不起作用


谷歌帮不了什么忙,搜索mysql.db表比它应该做的要困难得多://

你应该撤销特权,以便从
mysql.db
表(以及其他特权表)中删除记录。

所以我不得不出去买这本书。简短的回答是MySQL首先从
MySQL.user
表中读取。由于
mysql.user
是按我们所需的方式设置的,因此
mysql.db
表没有太大的帮助

答案很长,如果您不能直接放弃它并依赖于您的
mysql.user
表,那么就以每个用户每个数据库为基础手工完成它


确保你也有刷新权限

mysql.user
表是用正确的用户正确设置的。我原以为我最初的grant语句(第一次创建所有新用户时)也会更新其他mysql数据库表。我不明白你的意思,但在授予数据库特权时,唯一会删除这些特权的是REVOKE查询。删除相关数据库不会更改
mysql.db
中的记录。换句话说:如果您创建的数据库与删除的数据库同名,那么您没有撤销的旧特权将应用于“新”数据库。