Як я можу показати привілеї користувача в MySQL?


69

Я знаю, що я можу встановити привілеї користувача таким простим способом:

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

Але як я бачу наявні привілеї?

Мені потрібно побачити дані, схожі на ті, які використовуються в гранті. Іншими словами, я хочу знати, що даний користувач має доступ до даної таблиці даної бази даних від даного хоста.

Як я можу це отримати?

Відповіді:



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 вимагає привілей SELECT для бази даних mysql.


SHOW GRANTS requires the SELECT privilege for the mysql system database, except to display privileges and roles for the current user.
Сандіп Бхаттачаря
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.