Отзыв привилегий у пользователя в mySQL

Для каждого нового пользователя мы создаем в MySQL, используя оператор

CREATE USER newuser@localhost IDENTIFIED BY 'password';

"SHOW GRANTS" показывает только привилегию "USAGE ON *.* ".

Но пользователь может выбирать, вставлять,.. в базы данных "test" и "information_schema", и я не могу отозвать эти привилегии в "test" с помощью инструкции revoke, приведенной ниже.

REVOKE ALL ON test.* FROM newuser@localhost;
ERROR 1141 (42000) : There is no such grant defined for user 'guest' on host 'localhost'

Я просто не хочу, чтобы newuser обращался к базам данных test и information_schema.

1 ответ

Решение

http://dev.mysql.com/doc/refman/5.6/en/default-privileges.html

По умолчанию mysql.db таблица содержит строки, которые разрешают доступ любому пользователю к test база данных и другие базы данных с именами, которые начинаются с test_, (...) Это означает, что такие базы данных могут использоваться даже учетными записями, которые в противном случае не имеют никаких привилегий. Если вы хотите удалить доступ любого пользователя к тестовым базам данных, сделайте это следующим образом:

mysql> DELETE FROM mysql.db WHERE Db LIKE 'test%';
mysql> FLUSH PRIVILEGES;

(...) С предыдущим изменением его могут использовать только пользователи, которые имеют глобальные привилегии базы данных или привилегии, предоставленные явно для тестовой базы данных.

information_schema база данных - это доступная только для чтения псевдо-база данных, созданная на лету по запросу. Пользователи всегда смогут обратиться к этой базе данных, но она представляет только те записи, к которым у них уже есть доступ.

Другие вопросы по тегам