用户/角色的权限
对于与角色/用户关联的实际权限,我们需要查看与 CREATE USER、GRANT 和 REVOKE 命令关联的底层系统表。
我们必须了解 CREATE USER、GRANT 和 REVOKE 命令是与这些系统表用于特权和访问。
MySQL 不建议直接修改底层系统表。
如果我们选择修改底层系统表,则风险自负!
如何在不使用 SHOW GRANTS 的情况下收集有关分配给用户的 MySQL 8 角色和权限的信息
分配给用户的角色
我们可以使用 mysql.role_edges 表查看哪些角色分配给了哪些用户:
mysql> SELECT * FROM mysql.role_edges; +-----------+-----------+-----------+---------+-------------------+ | FROM_HOST | FROM_USER | TO_HOST | TO_USER | WITH_ADMIN_OPTION | +-----------+-----------+-----------+---------+-------------------+ | % | myrole | localhost | myuser | N | +-----------+-----------+-----------+---------+-------------------+ 1 row in set (0.00 sec)
列出系统上可用的活动和非活动角色
活动角色:至少有 1 个用户帐户分配给角色的角色:
mysql> SELECT DISTINCT u.User 'Role Name', if(e.from_user is NULL,0, 1) Active FROM mysql.user u LEFT JOIN role_edges e ON e.from_user=u.user WHERE u.account_locked='Y' AND u.password_expired='Y' AND u.authentication_string=''; +-----------+--------+ | Role Name | Active | +-----------+--------+ | myrole | 1 | | myrole2 | 0 | +-----------+--------+ 2 rows in set (0.00 sec)
更多: zhilu jiaocheng
用户/角色的全局权限
要了解用户/角色具有哪些特定的 GLOBAL 权限,我们可以访问 INFORMATION_SCHEMA.USER_PRIVILEGES 表:
mysql> select * from information_schema.user_privileges where GRANTEE='\'mysql.infoschema\'@\'localhost\''; +--------------------------------+---------------+----------------+--------------+ | GRANTEE | TABLE_CATALOG | PRIVILEGE_TYPE | IS_GRANTABLE | +--------------------------------+---------------+----------------+--------------+ | 'mysql.infoschema'@'localhost' | def | SELECT | NO | +--------------------------------+---------------+----------------+--------------+ 1 row in set (0.00 sec)
日期:2020-09-17 00:11:06 来源:oir作者:oir