MySQL 用户的授权不起作用-mysql.db 中的隐藏权限

MySQL 用户的授权不起作用-mysql.db 中的隐藏权限

我有一个 mysql 用户通过 SSL(mysql 5.0.77)从 Server2 连接到 Server1。

这是 Server1 上该用户的授权(server2 的 IP 在 xx.xx.xx.% 范围内)

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

我做了一个flush privileges,但即使没有权限,我仍然能够显示数据库、显示表、选择。这怎么可能?!!!

我检查了“显示完整进程列表”中用户并非始终处于连接状态,而是全新的 mysql 连接。一旦连接打开,我就会执行“显示授权”,有效权限是相同的... 使用。

--

mysql.db 表有此用户的条目,表明他在数据库中拥有 select、insert、update 和 delete 权限。那么这是一种隐藏权限表吗?这些权限怎么会存在那里而不是 mysql.user 中呢?

答案1

您可能在 mysql.user 中有一个匿名用户。

首先,请运行此查询:

SELECT USER(),CURRENT_USER();

用户()报告您尝试进行身份验证的方式

当前用户()报告 mysqld 如何允许进行身份验证

如果第二个函数发现了一个奇怪的用户,那么很有可能是匿名用户。

转至我的 DBA StackExchange 回答,了解 MySQL 如何执行用户身份验证以及如何以及为何删除匿名用户

相关内容