⚠️ คำเตือน: การเปิด Root ให้เข้าถึงจากทุก Host (% wildcard) เป็นช่องโหว่ด้านความปลอดภัยร้ายแรง ควรทำเฉพาะในสภาพแวดล้อม Development/Testing เท่านั้น
ขั้นตอนการเปิด Root Access จากทุก Host
1. เลือก Database mysql
USE mysql;
2. อัปเดต Host ของ User root
UPDATE user SET host = '%' WHERE host = 'localhost' AND user = 'root';
3. Flush Privileges
FLUSH PRIVILEGES;
วิธีที่ปลอดภัยกว่า (แนะนำ)
สร้าง User ใหม่สำหรับ Remote Access
-- สร้าง user ใหม่
CREATE USER 'app_user'@'%' IDENTIFIED BY 'strong_password';
-- ให้สิทธิ์เฉพาะ Database ที่ต้องการ
GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'app_user'@'%';
FLUSH PRIVILEGES;
จำกัด IP เฉพาะที่เชื่อถือได้
CREATE USER 'app_user'@'192.168.1.%' IDENTIFIED BY 'strong_password';
GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'app_user'@'192.168.1.%';
การตรวจสอบสิทธิ์
SELECT user, host FROM mysql.user WHERE user = 'root';
Best Practice สำหรับ Production
- ❌ ไม่ให้ Root เข้าถึงจาก % (Wildcard)
- ✅ สร้าง User เฉพาะ Application พร้อม Password แข็งแกร่ง
- ✅ ใช้ SSL/TLS สำหรับ Connection
- ✅ จำกัด IP ด้วย Firewall / Security Group
- ✅ ให้สิทธิ์น้อยที่สุด (Principle of Least Privilege)
- ✅ ปิด Port 3306 จาก Internet โดยตรง