Расширения команды SHOW GRANTS
¶
В Oracle MySQL SHOW GRANTS
отображает только явно назначенные привилегии для указанной учетной записи. Для учетной записи могут быть доступны и другие привилегии, но они не отображаются. Например, если существует анонимная учетная запись, указанная учетная запись может иметь возможность использовать привилегии анонимной, но SHOW GRANTS
не отобразит их. MyDB Сервер для MySQL предлагает команду SHOW EFFECTIVE GRANTS
для отображения всех действующих привилегий для учетной записи, включая те, что назначены неявно через другие учётные записи.
Пример¶
Если мы создадим следующих пользователей:
mysql> CREATE USER grantee@localhost IDENTIFIED BY 'grantee1';
Ожидаемый результат
Query OK, 0 rows affected (0.50 sec)
mysql> CREATE USER grantee IDENTIFIED BY 'grantee2';
Ожидаемый результат
Query OK, 0 rows affected (0.09 sec)
mysql> CREATE DATABASE db2;
Ожидаемый результат
Query OK, 1 row affected (0.20 sec)
mysql> GRANT ALL PRIVILEGES ON db2.* TO grantee WITH GRANT OPTION;
Ожидаемый результат
Query OK, 0 rows affected (0.12 sec)
- Вывод
SHOW GRANTS
перед изменением:
mysql> SHOW GRANTS;
Ожидаемый результат
+----------------------------------------------------------------------------------------------------------------+
| Grants for grantee@localhost |
+----------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'grantee'@'localhost' IDENTIFIED BY PASSWORD '*9823FF338D44DAF02422CF24DD1F879FB4F6B232' |
+----------------------------------------------------------------------------------------------------------------+
1 row in set (0.04 sec)
Хотя разрешение на базу данных db2
не показано, у пользователя grantee
достаточно прав для создания таблицы в этой базе данных:
user@trusty:~$ mysql -ugrantee -pgrantee1 -h localhost
mysql> CREATE TABLE db2.t1(a int);
Ожидаемый результат
Query OK, 0 rows affected (1.21 sec)
- Вывод
SHOW EFFECTIVE GRANTS
показывает все привилегии для пользователяgrantee
:
mysql> SHOW EFFECTIVE GRANTS;
Ожидаемый результат
+-------------------------------------------------------------------+
| Grants for grantee@localhost |
+-------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'grantee'@'localhost' IDENTIFIED BY PASSWORD|
| '*9823FF338D44DAF02422CF24DD1F879FB4F6B232' |
| GRANT ALL PRIVILEGES ON `db2`.* TO 'grantee'@'%' WITH GRANT OPTION|
+-------------------------------------------------------------------+
2 rows in set (0.00 sec)
См. также¶
- #53645 —
SHOW GRANTS
not displaying all the applicable grants
Последнее обновление:
2024-04-30