mysql - 我可以从 mysql.user 表中删除过时的条目吗?

标签 mysql

我做了很多 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/

相关文章:

php - Laravel JOIN 如果不为 NULL 则替换

php - 费率结构的数据库/算法

php - 在 codeigniter 中连接 3 个表

mysql - 查询无法按我预期的方式加载数据,覆盖现有数据

mysql - 将mysql语句转换为带索引的sql server

php - 寻找更好的方法从带有多个查询的sql表中选择php

php - 只有一个文件数据进入数据库

mysql - 修复 mysql 中的查询

php - 在 MySQL 的同一个 WHERE 上使用来自 PHP 的两个变量

mysql - ruby mysql 时间戳差异