Почему не работают мои роли в моей базе данных MySQL?

#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;