1

我做了一堆 GRANTS 尝试从远程主机获得连接。所以我做了 :

GRANT ALL PRIVILEGES ON *.* TO 'prog'@'foobar-dev.foobar.com' WITH GRANT OPTION;

但是,“foobar-dev”不再存在。还有一堆其他不存在的主机的其他条目..

我做了以下 REVOKE,希望 mysql.user 中的条目会消失:

REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'prog'@'foobar-dev.foobar.com'.

这会将 mysql.user 中的所有列设置为“n”,用于 'prog'@'foobar-dev.foobar.com',但删除该行不是更好(更清洁)吗?我没有删除该行,因为这可能会“破坏某些东西”并违反我不太熟悉的系统表的引用完整性。但是,每次在 mysql.user 上选择以检查权限时,我都必须看到虚假条目,这有点让人分心。我一直认为系统表应该反映现实,而不是过去的长篇大论。

那么,mysql.user 是否“独立存在”以便删除其中的行对其他表没有副作用?维护这张桌子的正确方法是什么?

这会破坏什么吗?

delete from mysql.user where Host = 'foobar-dev.foobar.com' and User = 'prog';

蒂亚!

4

1 回答 1

0

应该没事。在删除用户可用之前,撤销权限然后从 mysql.user 中删除曾经是建议的方法。如果您使用的是最新版本的 mysql,将来可以使用它drop user 'prog'@'foobar-dev.foobar.com';来撤销权限并从用户表中删除。见http://dev.mysql.com/doc/refman/5.0/en/drop-user.html

于 2012-04-15T18:57:00.297 回答