我尝试从远程主机获得连接时做了很多尝试。所以我做了:
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';
TIA!
答案 0 :(得分:0)
应该没问题。在删除用户可用之前,撤销权限然后从mysql.user中删除曾经是建议的方法。如果您使用的是最新版本的mysql,可以使用drop user 'prog'@'foobar-dev.foobar.com';
撤消权限,并在将来从用户表中删除。见http://dev.mysql.com/doc/refman/5.0/en/drop-user.html