#mysql #phpmyadmin #roles #privileges
#mysql #phpmyadmin #роли #привилегии
Вопрос:
В настоящее время я изучаю привилегии и роли пользователей в MySQL. В настоящее время я изучаю, как создавать пользовательские роли, предоставлять им привилегии и, наконец, создавать некоторых пользователей только для тестирования этих новых ролей. Дело в том, что я не знаю почему, но, несмотря на то, что роли правильно назначены пользователям, при входе в систему с их помощью я не вижу никакой схемы, как если бы у меня не было никаких привилегий. Сценарий, который я использую, является следующим:
Для создания новой роли:
CREATE ROLE 'read_db';
Для установки привилегий в базе данных «bdatosventas»:
GRANT SELECT ON bdatosventas.* TO 'read_db';
Создание нового пользователя:
CREATE USER 'test_read_user'@'localhost' IDENTIFIED BY 'somepassword';
Установка роли для этого нового пользователя:
GRANT 'read_db' TO 'test_read_user'@'localhost';
Проверка привилегий с помощью:
SHOW GRANTS FOR 'test_read_user'@'localhost';
И в качестве вывода я получаю:
GRANT `read_db` TO `test_read_user`@`localhost`
GRANT USAGE ON *.* TO `test_read_user`@`localhost`...
Наконец-то хороший:
FLUSH PRIVILEGES;
Итак, я предполагаю, что роль назначена правильно и должна работать.
Но когда я захожу в phpMyAdmin, используя этого нового пользователя, он не показывает мне никакой схемы, не может видеть мою базу данных «bdatosventas», только ту, которая называется «information_schema». В чем проблема?, спасибо.
Комментарии:
1. У вас тоже есть пользователь
test_reader_user@%
? Пользователь с локального хоста и пользователь с любого IP-адреса являются разными пользователями и могут иметь разные привилегии. ПопробуйтеSELECT USER();
, когда вы вошли в систему как тестовый пользователь.2. В запросе указано «test_read_user@localhost», я не создал другого пользователя, использующего аналогичное имя. Есть ли какой-нибудь способ увидеть фактические привилегии, а не просто получить имя роли?
3. У меня такая же проблема. по какой-то причине привилегии не передаются от роли пользователю. Следовательно, я также не могу войти в систему с пользователем. Если я использую Workbench для создания пользователей, тогда это сработает.
Ответ №1:
Я тоже обнаружил эту проблему. Я исправил это, запустив sql set default role <role_name> for <user>
, следуя этому документу
Ответ №2:
хорошо, это то, что решило это для меня.
После создания ролей, предоставления привилегий ролям, создания пользователей, а затем назначения членства пользователей в ролях, одним из важных шагов является АКТИВАЦИЯ ролей:
SET ROLE ALL;