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

MySQL User ใหม่ Access Denied แม้ให้ Privileges แล้ว ต้อง FLUSH PRIVILEGES

หลังสร้าง User และ Grant Privileges ต้องรัน FLUSH PRIVILEGES เพื่อโหลดสิทธิ์ใหม่เข้า Memory

ขั้นตอนการแก้ไข

1. สร้าง User

mysql> CREATE USER 'Bob'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.56 sec)

2. ให้สิทธิ์ทั้งหมด

mysql> GRANT ALL PRIVILEGES ON *.* TO 'Bob'@'%' WITH GRANT OPTION;
Query OK, 0 rows affected (0.23 sec)

3. Flush Privileges (สำคัญ!)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.14 sec)

หลังจากนี้ User 'Bob' จะเข้าระบบได้ปกติ

คำอธิบาย

MySQL โหลดตารางสิทธิ์ (grant tables) ลง Memory ตอน Startup การ GRANT แค่เขียนลง Disk เท่านั้น ต้อง FLUSH PRIVILEGES เพื่อ Reload เข้า Memory

MySQL 8.0+: ไม่จำเป็นต้อง FLUSH PRIVILEGES แล้ว (Auto-reload) แต่ทำก็ไม่ผิด

ตรวจสอบสิทธิ์

SHOW GRANTS FOR 'Bob'@'%';