Как я могу показать привилегии пользователя в MySQL?

69

Я знаю, что могу установить привилегии пользователя следующим простым способом:

grant all on [database name].[table name] to [user name]@[host name];

Но как я могу увидеть существующие привилегии?

Мне нужно увидеть данные, аналогичные тем, которые используются в гранте. Другими словами, я хочу знать, что данный пользователь имеет данный доступ к данной таблице данной базы данных с данного хоста.

Как я могу получить это?

Римский
источник

Ответы:

75

Команда SHOW GRANTS [FOR user]- это то, что вы ищете. Смотрите здесь для более подробной информации.

Джон Гарденье
источник
51

Вот документация MySQL для SHOW GRANTS:

SHOW GRANTS [FOR user]

Этот оператор перечисляет оператор GRANT или операторы, которые должны быть выполнены для дублирования привилегий, которые предоставляются учетной записи пользователя MySQL. Имя учетной записи используется в том же формате, что и для оператора GRANT; например, 'jeffrey' @ 'localhost'. Если вы укажете только часть имени пользователя в имени учетной записи, будет использоваться часть имени хоста «%». Для получения дополнительной информации об указании имен учетных записей см. Раздел 12.5.1.3, «Синтаксис GRANT».

mysql> SHOW GRANTS FOR 'root'@'localhost';
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+

Чтобы перечислить привилегии, предоставленные учетной записи, которую вы используете для подключения к серверу, вы можете использовать любой из следующих операторов:

SHOW GRANTS;
SHOW GRANTS FOR CURRENT_USER;
SHOW GRANTS FOR CURRENT_USER();

Начиная с MySQL 5.0.24, если SHOW GRANTS FOR CURRENT_USER (или любой из эквивалентных синтаксисов) используется в контексте DEFINER (например, в хранимой процедуре, определенной с помощью SQL SECURITY DEFINER), отображаемые разрешения - это те, которые определены и определены не призыватель.

SHOW GRANTS отображает только те привилегии, которые явно предоставлены указанной учетной записи. Для учетной записи могут быть доступны другие привилегии, но они не отображаются. Например, если существует анонимная учетная запись, именованная учетная запись может использовать свои привилегии, но SHOW GRANTS не будет их отображать.

Для SHOW GRANTS требуется привилегия SELECT для базы данных mysql.

radious
источник
SHOW GRANTS requires the SELECT privilege for the mysql system database, except to display privileges and roles for the current user.
Сандип Бхаттачарья