Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Hiển thị tất cả quyền (grants) của user trong MySQL qua INFORMATION_SCHEMA

Giới thiệu

Bảng INFORMATION_SCHEMA.SCHEMA_PRIVILEGES cung cấp thông tin chi tiết về các quyền cấp trên schema (database) cho từng tài khoản. Bổ sung cho lệnh SHOW GRANTS.

Truy vấn

mysql> SELECT * FROM INFORMATION_SCHEMA.SCHEMA_PRIVILEGES;

Kết quả mẫu (rút gọn)

+-----------------------------+---------------+--------------------+-------------------------+--------------+
| GRANTEE                     | TABLE_CATALOG | TABLE_SCHEMA       | PRIVILEGE_TYPE          | IS_GRANTABLE |
+-----------------------------+---------------+--------------------+-------------------------+--------------+
| 'mysql.sys'@'localhost'     | def           | sys                | TRIGGER                 | NO           |
| 'Adam Smith'@'localhost'    | def           | test               | SELECT, INSERT, UPDATE, | NO           |
|                             |               |                    | DELETE, CREATE, DROP... |              |
| 'David'@'localhost'         | def           | test               | SELECT, INSERT, UPDATE, | NO           |
|                             |               |                    | DELETE, CREATE, REF...  |              |
| 'Robert'@'%'                | def           | sample             | SELECT, INSERT, UPDATE, | YES          |
|                             |               |                    | DELETE, CREATE, DROP... |              |
| 'Robert'@'%'                | def           | web                | EXECUTE                 | NO           |
+-----------------------------+---------------+--------------------+-------------------------+--------------+

Giải thích cột

  • GRANTEE: Tài khoản 'user'@'host'.
  • TABLE_SCHEMA: Database áp dụng quyền.
  • PRIVILEGE_TYPE: Loại quyền (SELECT, INSERT, CREATE, EXECUTE...).
  • IS_GRANTABLE: YES nếu user có thể GRANT quyền này cho người khác (WITH GRANT OPTION).

So sánh với SHOW GRANTS

Đặc điểmSHOW GRANTSSCHEMA_PRIVILEGES
Phạm viGlobal + Database + Table + ColumnChỉ Database (schema)
Định dạngCâu lệnh GRANT gốcBảng quan hệ (dễ query, lọc, join)
Lọc user cụ thểSHOW GRANTS FOR 'u'@'h'WHERE GRANTEE = 'u@h'
Quyền cột/tableCóKhông (xem TABLE_PRIVILEGES, COLUMN_PRIVILEGES)

Các bảng liên quan

  • USER_PRIVILEGES: Quyền global.
  • TABLE_PRIVILEGES: Quyền trên bảng.
  • COLUMN_PRIVILEGES: Quyền trên cột.

Ví dụ lọc quyền của một user

SELECT TABLE_SCHEMA, PRIVILEGE_TYPE, IS_GRANTABLE
FROM INFORMATION_SCHEMA.SCHEMA_PRIVILEGES
WHERE GRANTEE = "'Robert'@'%'";