Вопрос: Как показать пользовательские привилегии в MySQL?


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

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

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

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

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


47
2018-02-27 21:45


Источник




Ответы:


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


53
2018-02-27 22:10





Здесь Документация 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), то отображенные гранты будут отображаться с помощью определений и а не invoker.

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

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


33
2018-02-27 21:46