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:
YESnế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ểm | SHOW GRANTS | SCHEMA_PRIVILEGES |
|---|---|---|
| Phạm vi | Global + Database + Table + Column | Chỉ Database (schema) |
| Định dạng | Câu lệnh GRANT gốc | Bả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/table | Có | 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'@'%'";