我做了很多 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'.
对于'prog'@'foobar-dev.foobar.com',这会将 mysql.user 中的所有列设置为“N”,但是删除该行不是更好(也更干净)吗?我没有删除该行,因为这可能会“破坏某些东西”并违反我不熟悉的系统表的参照完整性。但是,每次我在 mysql.user 上选择以检查权限时,我都必须看到虚假条目有点让人分心。我一直认为系统表应该反射(reflect)现实,而不是一长串的过去。
那么,mysql.user 是否“独立”以至于删除其中的行不会对其他表产生副作用?维护这个表的正确方法是什么?
这会破坏什么吗?
delete from mysql.user where Host = 'foobar-dev.foobar.com' and User = 'prog';
TIA!
最佳答案
应该没问题。在删除用户可用之前,撤销权限然后从 mysql.user 中删除曾经是建议的方法。如果您使用的是最新版本的 mysql,可以使用 drop user 'prog'@'foobar-dev.foobar.com';
撤销权限并在将来从用户表中删除。见http://dev.mysql.com/doc/refman/5.0/en/drop-user.html
关于mysql - 我可以从 mysql.user 表中删除过时的条目吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10164756/