I have a mysql user connecting from Server2 to Server1 over SSL (mysql 5.0.77).
Here is the grants for this user on Server1, (server2 has an ip in the range 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 |
I did a flush privileges
, but even with no privileges, I'm still able to show databases, show tables, select. How is that possible ?!!!
I checked that in 'show full processlist' the user is not always connected, fresh new mysql connection. Once the connection opened, I do a 'show grants', the effective permission is the same... USAGE.
--
The table mysql.db have an entry for this user that says he has select,insert,update and delete in the database. So is this kind of a hidden permission table ? How those permission could have gone there instead of mysql.user ?
show grants for user@'%'
? What do you see if you do aselect * from mysql.user where user='user'
;mysql.db
table? Is there anything in there matching a user of%
perhaps?