Пользователь не предоставлен для базы данных MySQL, но все еще может запросить?
Вот что я делаю, чтобы проверить гранты для конкретного пользователя:
mysql> SHOW GRANTS FOR mmuser1;
+-----------------------------------------------------------------------------------------------------------------+
| Grants for mmuser1@% |
+-----------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'mmuser1'@'%' IDENTIFIED BY PASSWORD '*fesfesfesfes' |
| GRANT ALL PRIVILEGES ON `shopping_mm`.* TO 'mmuser1'@'%'
Однако, если я сделаю следующее:
mysql -ummuser1 -p
Я могу получить доступ и запросить другую базу данных (спорт). Также при выполнении:
SELECT Db,User FROM db;
Я могу видеть этот Db, связанный с этим пользователем.
Как это возможно, что не отображается в таблице грантов?
2 ответа
Как указано в SHOW GRANTS
Синтаксис:
Если указать только часть имени пользователя в имени учетной записи, часть имени хоста
'%'
используется.
Вполне вероятно, что вы предоставили разрешение своему пользователю с явным именем хоста, например 'mmuser1'@'localhost'
, Как описано далее на той же странице, это можно проверить после подключения:
Чтобы перечислить привилегии, предоставленные учетной записи, которую вы используете для подключения к серверу, вы можете использовать любой из следующих операторов:
SHOW GRANTS; SHOW GRANTS FOR CURRENT_USER; SHOW GRANTS FOR CURRENT_USER();
Или, альтернативно, просто проверить CURRENT_USER
:
SELECT CURRENT_USER;
Может быть, у вас есть подстановочный пользователь, который обычно по умолчанию в Mysql настроен?
Любой или% для имени пользователя или хоста разрешит любое имя пользователя / разрешение хоста для БД, как на картинке ниже
Вы должны удалить этих пользователей, которые обычно по умолчанию в MySQL
Эта картинка является учетными записями по умолчанию, которые установлены с MYSQL, и все они должны быть удалены, как только вы создадите нового пользователя, поскольку ни один из них не является безопасным, они позволяют - любое имя пользователя USAGE доступ к БД