我做了一堆 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';
蒂亚!