У меня есть пользователь mysql, подключающийся с Server2 к Server1 через SSL (mysql 5.0.77).
Вот гранты для этого пользователя на Server1 (server2 имеет ip в диапазоне xx.xx.xx.%)
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 |
Я сделал flush privileges
, но даже без прав я все еще могу показывать базы данных, показывать таблицы, выбирать. Как такое возможно? !!!
Я проверил, что в «Показать полный список процессов» пользователь не всегда подключен, новое новое соединение mysql. Как только соединение открылось, я делаю «шоу грантов», действующее разрешение такое же ... ИСПОЛЬЗОВАНИЕ.
-
В таблице mysql.db есть запись для этого пользователя, в которой говорится, что у него есть выбор, вставка, обновление и удаление в базе данных. Так что же это за скрытая таблица разрешений? Как это разрешение могло попасть туда вместо mysql.user?
Возможно, у вас есть анонимный пользователь в mysql.user.
Перво-наперво. Запустите этот запрос:
SELECT USER(),CURRENT_USER();
ПОЛЬЗОВАТЕЛЬ () сообщает, как вы пытались аутентифицироваться
ТЕКУЩИЙ ПОЛЬЗОВАТЕЛЬ() сообщает, как mysqld разрешил аутентификацию
Если вторая функция обнаруживает странного пользователя, скорее всего, это анонимный пользователь.