การเปลี่ยนชื่อผู้ใช้ root ใน MySQL
สามารถเปลี่ยนชื่อผู้ใช้ root ได้โดยอัปเดตตาราง mysql.user โดยตรง ต้องมีสิทธิ์ SUPER หรือ root เอง
ไวยากรณ์
USE mysql;
UPDATE user SET user = 'new_username' WHERE user = 'root';
FLUSH PRIVILEGES;
ขั้นตอนการทำงาน
- เข้าสู่ MySQL ด้วยผู้ใช้ root
- สลับไปใช้ database mysql:
USE mysql; - ตรวจสอบผู้ใช้ปัจจุบัน:
SELECT user FROM user; - อัปเดตชื่อ root:
UPDATE user SET user = 'myRoot' WHERE user = 'root'; - รีโหลดสิทธิ์:
FLUSH PRIVILEGES; - ตรวจสอบอีกครั้ง:
SELECT user FROM user;
ตัวอย่างผลลัพธ์
ก่อนเปลี่ยน:
+------------------+
| user |
+------------------+
| Manish |
| User2 |
| mysql.infoschema |
| mysql.session |
| mysql.sys |
| root |
| Adam Smith |
| User1 |
| am |
+------------------+
หลังเปลี่ยน root -> myRoot:
+------------------+
| user |
+------------------+
| Manish |
| User2 |
| myRoot |
| mysql.infoschema |
| mysql.session |
| mysql.sys |
| Adam Smith |
| User1 |
| am |
+------------------+
⚠️ ข้อควรระวังสำคัญ
- เสี่ยงต่อการล็อกตัวเองออก - หากทำผิดอาจไม่สามารถเข้าระบบได้
- แอปพลิเคชันที่เชื่อมต่อด้วย root จะหยุดทำงาน - ต้องอัปเดต config ทุกที่
- บางระบบอาจพึ่งพาผู้ใช้ root - scripts, monitoring, backup tools
- แนะนำให้สร้างผู้ใช้ใหม่แทน - ให้สิทธิ์เท่า root แล้วปิด root ไว้เฉพาะ localhost
วิธีที่ปลอดภัยกว่า: สร้าง Superuser ใหม่
CREATE USER 'admin'@'%' IDENTIFIED BY 'strong_password';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
จากนั้นปิดการเข้าถึง root จาก remote:
UPDATE mysql.user SET Host = 'localhost' WHERE User = 'root' AND Host = '%';
FLUSH PRIVILEGES;