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

สิทธิ์ GRANT บน *.* ใน MySQL ครอบคลุมฐานข้อมูลที่สร้างหลังการให้สิทธิ์หรือไม่?

คำตอบคือ ครอบคลุม เนื่องจากสิทธิ์นี้เป็น Global Privilege (สิทธิ์ระดับเซิร์ฟเวอร์) ซึ่งจะมีผลบังคับใช้กับฐานข้อมูลและตารางทั้งหมดที่มีอยู่ในปัจจุบันและที่จะสร้างขึ้นในภายหลัง

ตัวอย่างการทดสอบ

1. สร้างผู้ใช้ใหม่

mysql> CREATE USER 'Jace'@'localhost' IDENTIFIED BY 'Jace123';
Query OK, 0 rows affected (0.67 sec)

2. ให้สิทธิ์ SELECT แบบ Global (*.*)

mysql> GRANT SELECT ON *.* TO 'Jace'@'localhost';
Query OK, 0 rows affected (0.58 sec)

3. ตรวจสอบสิทธิ์ที่ได้รับ

mysql> SHOW GRANTS FOR 'Jace'@'localhost';

4. ผลลัพธ์ที่ได้

+-------------------------------------------+
| Grants for Jace@localhost                 |
+-------------------------------------------+
| GRANT SELECT ON *.* TO `Jace`@`localhost` |
+-------------------------------------------+
1 row in set (0.14 sec)

สรุป

การใช้ GRANT ... ON *.* จะให้สิทธิ์เข้าถึง ทุกฐานข้อมูลและทุกตาราง รวมถึงฐานข้อมูลที่จะสร้างใหม่ในอนาคตด้วย ควรใช้ด้วยความระมัดระวังและให้เฉพาะผู้ใช้ที่เชื่อถือได้เท่านั้น