ใน MySQL สิทธิ์ SHOW DATABASES ควบคุมว่าผู้ใช้สามารถเห็นรายชื่อฐานข้อมูลทั้งหมดได้หรือไม่ (ผ่าน SHOW DATABASES หรือ INFORMATION_SCHEMA.SCHEMATA) การเพิกถอนสิทธิ์นี้ช่วยเพิ่มความปลอดภัย
รูปแบบคำสั่ง
REVOKE SHOW DATABASES ON *.* FROM 'yourUserName'@'yourHostName';
ตัวอย่าง: ดู User ทั้งหมด แล้ว Revoke สิทธิ์ John@localhost
mysql> select user, host from mysql.user;
รายชื่อ User (บางส่วน):
+------------------+-----------+ | user | host | +------------------+-----------+ | root | % | | John | localhost | | Chris | localhost | | ... | ... | +------------------+-----------+
ดูสิทธิ์ปัจจุบันของ John:
mysql> show grants for 'John'@'localhost';
(แสดงรายการ GRANT ยาวมาก รวมถึง SHOW DATABASES)
เพิกถอนสิทธิ์ SHOW DATABASES
mysql> revoke show databases on *.* from 'John'@'localhost';
คำอธิบาย:
SHOW DATABASESเป็น Global Privilege (ON *.* )- หาก Revoke แล้ว User จะไม่เห็น Database อื่นที่ไม่มีสิทธิ์เข้าถึง
- Root และ User ที่มี
SUPERprivilege ยังเห็นได้หมด - คำสั่งตรงข้าม:
GRANT SHOW DATABASES ON *.* TO 'user'@'host'; - MySQL 8.0+ มี
SHOW_DATABASESเป็น Dynamic Privilege แยกจาก Static Privilege