ผู้ใช้หลายๆ ท่าน คงเคยพบปัญหาในการลืม 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