Назад | Перейти на главную страницу

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

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

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

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

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

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

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

Здесь Документация MySQL для SHOW GRANTS:

SHOW GRANTS [FOR user]

Этот оператор перечисляет оператор GRANT или операторы, которые должны быть выполнены для дублирования привилегий, предоставленных учетной записи пользователя MySQL. Учетная запись названа в том же формате, что и для оператора GRANT; например, "Джеффри" @ "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.