Eu tenho um usuário mysql conectando do Server2 ao Server1 por SSL (mysql 5.0.77).
Aqui estão as concessões para este usuário no Server1, (server2 tem um ip no intervalo 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 |
Eu fiz um flush privileges
, mas mesmo sem privilégios, ainda posso mostrar bancos de dados, mostrar tabelas, selecionar. Como isso é possível ?!!!
Eu verifiquei que em 'show processlist completo' o usuário não está sempre conectado, nova conexão mysql nova. Uma vez que a conexão foi aberta, eu faço um 'show grant', a permissão efetiva é a mesma ... USAGE.
-
A tabela mysql.db tem uma entrada para este usuário que diz que ele selecionou, inseriu, atualizou e deletou no banco de dados. Então este é um tipo de tabela de permissão oculta? Como essa permissão poderia ter ido lá em vez de mysql.user?