我有一个MySQL用户通过SSL从Server2连接到Server1(MySQL 5.0.77)。
以下是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 ,但即使没有特权,我仍然能够显示数据库,显示表,select。 这怎么可能?
我检查了“显示完整进程列表”用户并不总是连接,新的新的MySQL连接。 一旦连接打开,我做一个“显示拨款”,有效的权限是一样的…用法。
–
表mysql.db有一个这个用户的条目,说他有数据库中的select,插入,更新和删除。 那么这是一个隐藏的权限表吗? 如何这些权限可以去那里,而不是mysql.user?
有可能你在mysql.user中可能有一个匿名用户。
首先要做的事情 请运行此查询:
SELECT USER(),CURRENT_USER();
USER()报告您如何尝试进行身份validation
CURRENT_USER()报告如何允许mysqld进行身份validation
如果第二个函数显示了一个奇怪的用户,那么很有可能是匿名用户。
关于MySQL如何执行用户authentication以及如何以及为什么要删除匿名用户,请转到我的DBA StackExchange答案 。