Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

วิธีตรวจสอบสิทธิ์ (Privileges) ของผู้ใช้เฉพาะใน MySQL

การตรวจสอบสิทธิ์ผู้ใช้ด้วย SHOW GRANTS

คำสั่ง SHOW GRANTS ใช้แสดงสิทธิ์ (Privileges) ที่มอบให้กับบัญชีผู้ใช้ MySQL สามารถตรวจสอบได้ทั้งสำหรับผู้ใช้ปัจจุบัน (root) และผู้ใช้เฉพาะ

ไวยากรณ์ (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)

ตรวจสอบสิทธิ์ของผู้ใช้ 'JOHN'@'%':

mysql> SHOW GRANTS FOR 'JOHN'@'%';
+---------------------------------------------------------------------------------------------------------------------------+
| Grants for JOHN@%                                                                                                          |
+---------------------------------------------------------------------------------------------------------------------------+
| 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 `JOHN`@`%` 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 `JOHN`@`%` WITH GRANT OPTION |
+---------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

คำอธิบาย

  • user@host ระบุบัญชีผู้ใช้และโฮสต์ที่อนุญาตให้เชื่อมต่อ (%) หมายถึงทุกโฮสต์
  • สิทธิ์แสดงในรูปแบบ GRANT ... ON database.table TO user@host
  • WITH GRANT OPTION หมายถึงผู้ใช้นั้นมอบสิทธิ์ให้ผู้อื่นได้
  • MySQL 8.0+ แยกสิทธิ์แบบ Dynamic Privileges (เช่น BACKUP_ADMIN) ออกมาเป็นบรรทัดแยก

หมายเหตุ: ต้องมีสิทธิ์ SELECT บนตาราง mysql.user หรือเป็นผู้ใช้ที่มีสิทธิ์ SHOW GRANTS จึงดูสิทธิ์ผู้อื่นได้