การตรวจสอบสิทธิ์ผู้ใช้ด้วย SHOW GRANTS
คำสั่ง SHOW GRANTS แสดงสิทธิ์ที่มอบให้กับบัญชีผู้ใช้ สามารถตรวจสอบสิทธิ์ของตัวเอง (CURRENT_USER) หรือผู้ใช้อื่นได้
ไวยากรณ์ (Syntax)
-- สิทธิ์ของผู้ใช้ปัจจุบัน
SHOW GRANTS;
-- สิทธิ์ของผู้ใช้เฉพาะ
SHOW GRANTS FOR 'yourUserName'@'yourHostName';
ตัวอย่าง: สิทธิ์ของ root
mysql> SHOW GRANTS;
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for root@% |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `root`@`%` WITH GRANT OPTION |
| GRANT BACKUP_ADMIN,BINLOG_ADMIN,CONNECTION_ADMIN,ENCRYPTION_KEY_ADMIN,GROUP_REPLICATION_ADMIN,PERSIST_RO_VARIABLES_ADMIN,REPLICATION_SLAVE_ADMIN,RESOURCE_GROUP_ADMIN,RESOURCE_GROUP_USER,ROLE_ADMIN,SET_USER_ID,SYSTEM_VARIABLES_ADMIN,XA_RECOVER_ADMIN ON *.* TO `root`@`%` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.08 sec)
ตัวอย่าง: สิทธิ์ของผู้ใช้ 'Bob'@'%'
mysql> SHOW GRANTS FOR 'Bob'@'%';
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for Bob@% |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `Bob`@`%` WITH GRANT OPTION |
| GRANT BACKUP_ADMIN,BINLOG_ADMIN,CONNECTION_ADMIN,ENCRYPTION_KEY_ADMIN,GROUP_REPLICATION_ADMIN,PERSIST_RO_VARIABLES_ADMIN,REPLICATION_SLAVE_ADMIN,RESOURCE_GROUP_ADMIN,RESOURCE_GROUP_USER,ROLE_ADMIN,SET_USER_ID,SYSTEM_VARIABLES_ADMIN,XA_RECOVER_ADMIN ON *.* TO `Bob`@`%` WITH GRANT OPTION |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
คำอธิบาย
- บรรทัดแรก: Static Privileges (สิทธิ์มาตรฐาน) ระดับ Global (*.*)
- บรรทัดที่สอง: Dynamic Privileges (MySQL 8.0+) เช่น BACKUP_ADMIN, BINLOG_ADMIN
WITH GRANT OPTION= ผู้ใช้นั้นสามารถมอบสิทธิ์นี้ให้ผู้อื่นได้user@hostต้องระบุให้ตรงกับที่สร้าง user (host '%' = ทุก IP)
คำสั่งที่เกี่ยวข้อง
-- ดูผู้ใช้ทั้งหมด
SELECT User, Host FROM mysql.user;
-- ดูสิทธิ์เฉพาะ Database
SHOW GRANTS FOR 'user'@'host' ON database_name.*;
-- ยกเลิกสิทธิ์
REVOKE privilege ON database.table FROM 'user'@'host';