mysql.db 表有什么用?

Bas*_*974 6 mysql

与我的MySQL 问题相关

我在 mysql.user 中有一个具有 USAGE 权限的用户,但在 mysql.db 中该用户具有选择、插入、更新、删除。这样用户就可以成功查询数据库。

我找不到有关此 mysql.db 如何工作的任何信息,是否类似于某种缓存权限?mysqld 重启会刷新它吗?

mysql> show grants for user@'xx.xx.xx.%';
+-------------------------------------------------------------------------------------------------------------------------------+ 
| Grants for user@xx.xx.xx.%                                      |
+-------------------------------------------------------------------------------------------------------------------------------+ 
| GRANT USAGE ON *.* TO 'user'@'xx.xx.xx.%' IDENTIFIED BY PASSWORD 'xxx' REQUIRE SSL |



 mysql> select host,db,user, select_priv,update_priv,delete_priv  from
 mysql.db where  user='user'; 
 | host         | db   | user    | select_priv | update_priv |  delete_priv | 
 | xx.xx.xx.1   | myDB | user    | Y           | Y           | Y
Run Code Online (Sandbox Code Playgroud)

Der*_*ney 7

文档mysql.db是数据库专用手柄补助表。也就是说,如果您在GRANT命令中明确指出了一个数据库,它将显示在此表中:

GRANT SELECT, INSERT ON foo.* TO `bar`@`localhost`;
Run Code Online (Sandbox Code Playgroud)

因此,用户bar@localhost将在mysql.db表中将 SELECT 和 INSERT 标记为“Y” 。

要从此表中删除条目,同样需要指定数据库:

REVOKE SELECT, INSERT ON foo.* FROM `bar`@`localhost`;
Run Code Online (Sandbox Code Playgroud)

发出一条REVOKE INSERT ON *.*语句(所有数据库)不会影响这个表。

此外,一条DROP USER语句将清除mysql.*处理用户身份验证的各种表中的所有条目,例如mysql.db.