与我的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)
从文档,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.
| 归档时间: |
|
| 查看次数: |
13676 次 |
| 最近记录: |