สามารถเปลี่ยนชื่อผู้ใช้ root ได้โดยอัปเดตตาราง mysql.user โดยตรง
รูปแบบคำสั่ง
UPDATE mysql.user SET user = 'new_root_name' WHERE user = 'root';
ตามด้วย: FLUSH PRIVILEGES;
ตัวอย่าง
1. ดูผู้ใช้ปัจจุบัน
mysql> select user, host from mysql.user;
+------------------+-----------+ | user | host | +------------------+-----------+ | root | % | | root | localhost | | mysql.infoschema | % | | mysql.session | % | | mysql.sys | % | | ... | ... | +------------------+-----------+
2. เปลี่ยนชื่อ root@% เป็น MyRoot
mysql> UPDATE mysql.user SET user = 'MyRoot' WHERE user = 'root' AND host = '%'; Query OK, 1 row affected (0.13 sec)
3. โหลดสิทธิ์ใหม่
mysql> FLUSH PRIVILEGES;
4. ตรวจสอบผลลัพธ์
mysql> select user, host from mysql.user;
+------------------+-----------+ | user | host | +------------------+-----------+ | MyRoot | % | | root | localhost | | mysql.infoschema | % | | mysql.session | % | | mysql.sys | % | | ... | ... | +------------------+-----------+
⚠️ ข้อควรระวังสำคัญ
- อันตรายสูง: การเปลี่ยนชื่อ root อาจทำให้ไม่สามารถเข้าระบบได้ หากลืมชื่อใหม่
- ควร สร้างผู้ใช้ใหม่ด้วยสิทธิ์เต็ม แทนการเปลี่ยนชื่อ root
- บางระบบ/สคริปต์คาดหวัง user ชื่อ root อยู่
- MySQL 8.0+ ใช้
RENAME USERแทน (ปลอดภัยกว่า)
วิธีที่ปลอดภัยกว่า (MySQL 8.0+)
-- สร้าง user ใหม่ CREATE USER 'admin'@'%' IDENTIFIED BY 'strong_password'; GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION; -- ทดสอบ login ด้วย user ใหม่ก่อน -- ลบ root เดิม (ถ้าจำเป็น) DROP USER 'root'@'%';
คำสั่ง RENAME USER (MySQL 8.0+)
RENAME USER 'root'@'%' TO 'MyRoot'@'%'; FLUSH PRIVILEGES;