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

เปลี่ยนชื่อผู้ใช้ Root @localhost ใน MySQL

สามารถเปลี่ยนชื่อผู้ใช้ 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;