【问题标题】:How do I rebuild/repopulate the mysql.db table?如何重建/重新填充 mysql.db 表?
【发布时间】:2011-07-30 22:48:29
【问题描述】:

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

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

Google 帮不上什么忙,搜索 mysql.db 表比应有的困难:/

【问题讨论】:

    标签: mysql database mysql-management


    【解决方案1】:

    所以我不得不出去买这本书。简短的回答是 MySQL 首先从 mysql.user 表中读取。由于mysql.user 是按照我们想要的方式设置的,所以mysql.db 表并不是很有帮助。

    长答案,如果您不能仅仅放弃它并依赖您的mysql.user 表,请在每个用户每个数据库的基础上手动执行。

    确保您也刷新权限!

    【讨论】:

      【解决方案2】:

      您应该 REVOKE 权限才能从 mysql.db 表(以及其他权限表)中删除记录。

      【讨论】:

      • mysql.user 表使用正确的用户正确设置。我以为我最初的授权语句(我第一次创建所有新用户时)也会更新其他 mysql 数据库表。
      • 我不明白你的意思,但是在授予数据库权限时,唯一会删除这些权限的是 REVOKE 查询。删除相关数据库不会更改mysql.db 中的记录。换句话说:如果您创建与删除的数据库同名的数据库 - 您没有撤销的旧权限将应用于“新”数据库。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-25
      • 2012-08-07
      • 1970-01-01
      相关资源
      最近更新 更多