ผู้ใช้หลายๆ ท่าน คงเคยพบปัญหาในการลืม Root Password ใน MySQL และ MariaDB จึงทำให้ไม่สามารถเข้าจัดการ database ของเราได้ ในบทความวันนี้เราจะมาสอนวิธีการ Reset root password กัน โดยการ ssh เข้าไปยังระบบ เป็น root ของผู้ใช้
ขั้นตอนที่ 1 – ตรวจสอบเวอร์ชั่นของ database
เพื่อการใช้คำสั่งในการจัดการให้ถูกต้อง แนะนำให้ตรวจสอบด้วยคำสั่ง
# mysql --version
ผลลัพธ์เช่นนี้ เมื่อใช้งานเป็น MySQL
mysql Ver 14.14 Distrib 5.5.58, for Linux (x86_64) using readline 5.1
ผลลัพธ์เช่นนี้ เมื่อใช้งานเป็น MariaDB
mysql Ver 15.1 Distrib 10.2.3-MariaDB, for Linux (x86_64) using readline 5.1
ขั้นตอนที่ 2 – หยุดการทำงานของ database
หากจะเริ่มการเปลี่ยน root password เราจะต้องปิดการใช้งานของ database ก่อน
คำสั่งในการจัดการสำหรับ MySQL
# systemctl stop mysql
คำสั่งในการจัดการสำหรับ MariaDB
# systemctl stop mariadb
ขั้นตอนที่ 3 – ทำการ Start MySQL เป็นแบบ save mode
Start MySQL เป็น save mode ด้วยคำสั่ง
# mysqld_safe –skip-grant-tables &
จากนั้นเราจะสามารถเชื่อมต่อกับ database เป็นผู้ใช้ root ได้โดยไม่ถาม password
# mysql -u root
ผลลัพธ์เช่นนี้ เมื่อใช้งานเป็น MySQL
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
ผลลัพธ์เช่นนี้ เมื่อใช้งานเป็น MariaDB
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
ขั้นตอนที่ 4 – ทำการ Reset root password
คำสั่งในการจัดการสำหรับ MySQL
ให้ใส่ค่า password ใหม่แทนคำว่า new_password
สำหรับ MySQL 5.7.6 และใหม่กว่า
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; mysql> FLUSH PRIVILEGES; mysql> QUIT;
สำหรับ MySQL 5.7.5 และเก่ากว่า
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password'); mysql> FLUSH PRIVILEGES; mysql> QUIT;
คำสั่งในการจัดการสำหรับ MariaDB
ให้ใส่ค่า password ใหม่แทนคำว่า new_password
สำหรับ MariaDB 10.1.20 และใหม่กว่า
MariaDB [(none)]> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; MariaDB [(none)]> FLUSH PRIVILEGES; MariaDB [(none)]> QUIT;
สำหรับ MariaDB 10.1.20 และเก่ากว่า
MariaDB [(none)]> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password'); MariaDB [(none)]> FLUSH PRIVILEGES; MariaDB [(none)]> QUIT;
ขั้นตอนที่ 5 – ทำการ Start MySQL
คำสั่งในการจัดการสำหรับ MySQL
# systemctl start mysql
คำสั่งในการจัดการสำหรับ MariaDB
# systemctl start mariadb
จากนั้นเราจะสามารถเชื่อมต่อกับ database ด้วย root password ใหม่
# mysql -u root -p