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

สิทธิ์การดูฐานข้อมูลทั้งหมดใน MySQL ใช้ REVOKE SHOW DATABASES

ใน 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 ที่มี SUPER privilege ยังเห็นได้หมด
  • คำสั่งตรงข้าม: GRANT SHOW DATABASES ON *.* TO 'user'@'host';
  • MySQL 8.0+ มี SHOW_DATABASES เป็น Dynamic Privilege แยกจาก Static Privilege