Отзыв привилегий у пользователя в 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
база данных - это доступная только для чтения псевдо-база данных, созданная на лету по запросу. Пользователи всегда смогут обратиться к этой базе данных, но она представляет только те записи, к которым у них уже есть доступ.