บทนำ
คำสั่ง SHOW GRANTS ใช้แสดงสิทธิ์ (Privileges) ที่มอบให้กับ User Account ใน MySQL
รูปแบบการใช้งาน
SHOW GRANTS FOR 'yourUserName'@'yourHostName';
ดูรายชื่อ User และ Host ในระบบ
mysql> SELECT User, Host FROM MySQL.User;
ผลลัพธ์ตัวอย่าง
+------------------+-----------+
| User | Host |
+------------------+-----------+
| Bob | % |
| Charlie | % |
| Robert | % |
| User2 | % |
| mysql.infoschema | % |
| mysql.session | % |
| mysql.sys | % |
| root | % |
| @UserName@ | localhost |
| Adam Smith | localhost |
| Chris | localhost |
| David | localhost |
| James | localhost |
| John | localhost |
| John Doe | localhost |
| User1 | localhost |
| am | localhost |
| hbstudent | localhost |
| mysql.infoschema | localhost |
| mysql.session | localhost |
+------------------+-----------+
20 rows in set (0.00 sec)
แสดงสิทธิ์ของ User 'Robert'@'%'
mysql> SHOW GRANTS FOR 'Robert'@'%';
ผลลัพธ์
+----------------------------------------------------------------------+
| Grants for Robert@% |
+----------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `Robert`@`%` |
| GRANT ALL PRIVILEGES ON `sample`.* TO `Robert`@`%` WITH GRANT OPTION |
| GRANT EXECUTE ON `web`.* TO `Robert`@`%` |
+----------------------------------------------------------------------+
3 rows in set (0.05 sec)
คำอธิบายสิทธิ์
| Grant Statement | ความหมาย |
|---|---|
| GRANT USAGE ON *.* | สิทธิ์พื้นฐาน (Login ได้ แต่ไม่มีสิทธิ์อื่น) - ให้ทุก User อัตโนมัติ |
| GRANT ALL PRIVILEGES ON `sample`.* | สิทธิ์เต็ม (SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, etc.) บนฐานข้อมูล sample |
| WITH GRANT OPTION | อนุญาตให้ User นี้ Grant สิทธิ์ให้ User อื่นได้ |
| GRANT EXECUTE ON `web`.* | สิทธิ์รัน Stored Procedure/Function บนฐานข้อมูล web |
คำสั่งที่เกี่ยวข้อง
-- ดูสิทธิ์ของ User ปัจจุบัน
SHOW GRANTS;
-- ดูสิทธิ์ของ User อื่น (ต้องมีสิทธิ์ SELECT ON mysql.user)
SHOW GRANTS FOR 'user'@'host';
-- Grant สิทธิ์
GRANT SELECT, INSERT ON db.* TO 'user'@'host';
-- Revoke สิทธิ์
REVOKE INSERT ON db.* FROM 'user'@'host';
-- Flush Privileges (หลังแก้ไขตาราง mysql.user โดยตรง)
FLUSH PRIVILEGES;