Reset MySQL 8.0 Root Password trên Linux

Database luôn có vị trí quan trọng trên bất kì hệ thống nào. Nếu chẳng may bạn quên mật khẩu root của My SQL, bài viết này hướng bạn reset root password của MySQL phiên bản 8.0

Xem thêm:

Reset MySQL Root Password bằng –init-file

Một trong những cách reset root password là các bạn tạo một init file và khởi động MySQL với tùy chọn sử dụng init file đã tạo.

# vim /home/user/init-file.txt

Lưu ý quan trọng là bạn phải phân quyền cho mysql user đọc được file trên. Bạn có thể xem bài viết về phân quyền trong linux tại đây.

Các bạn thêm vào file dòng dưới đây:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

Create File with New MySQL Root Password

Theo hình trên, password mới là r@virig!

Tiếp theo chúng ta tắt dịch vụ mysql bằng lệnh sau

# systemctl stop mysqld.service # cho hệ thống sử dụng systemd 
# /etc/init.d/mysqld stop # cho hệ thống sử dụng init

Sau đó thực hiện lệnh sau:

# mysqld --user=mysql --init-file=/home/user/init-file.txt --console

Câu lệnh trên sẽ khởi động lại MySQL và xử lý init file bạn đã tạo, mật khẩu của user root sẽ được cập nhật theo mật khẩu mới của bạn. Sau khi hoàn thành bạn nhớ xóa file đó nhé.

Reset MySQL Root Password

Bạn cần xác nhận MySQL được tắt và khởi động lại mà không gặp vấn đề gì.

# systemctl stop mysqld.service # cho hệ thống sử dụng systemd 
# systemctl restart mysqld.service # cho hệ thống sử dụng systemd 

# /etc/init.d/mysqld stop # cho hệ thống sử dụng init
# /etc/init.d/mysqld restart # cho hệ thống sử dụng init

Bây giờ bạn đã có thể đăng nhập MySQL bằng mật khẩu mới.

# mysql -u root -p

Connect to MySQL with New Root Password

Reset MySQL Root Password Using –skip-grant-tables

Cách thứ 2 trong bài viết này mình muốn nói đến là khởi động MySQL với tùy chọn--skip-grant-tables . Tùy chọn này sẽ giúp tất cả user có thể kết nối mà không cần mật khẩu. Nếu khởi động với tùy chọn này, tùy chọn  --skip-networking  cũng được tự động kích hoạt, các kết nối từ xa sẽ không còn hiệu lực.

Đầu tiên các bạn tắt dịch vụ MySQL

# systemctl stop mysqld.service # cho hệ thống sử dụng systemd 
# /etc/init.d/mysqld stop # cho hệ thống sử dụng init

Tiếp theo khởi động MySQL với tùy chọn –skip-grant-tables

# mysqld --skip-grant-tables --user=mysql &

sau đó bạn có thể kết nối đến mysql chỉ với câu lệnh:

# mysql

Tiếp theo các bạn thực hiện lệnh sau để cập nhật lại thông tin phân quyền để có thể thay đổi password sau đó:

# FLUSH PRIVILEGES;

Bây giờ các bạn có thể thực hiện lệnh cấp lại password mới cho user root

# ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_passowrd';

Reset Root Password in MySQL 8

Tiếp theo bạn tắt MySQL và khởi động lại.

# systemctl stop mysqld.service # cho hệ thống sử dụng systemd 
# systemctl restart mysqld.service # cho hệ thống sử dụng systemd 

# /etc/init.d/mysqld stop # cho hệ thống sử dụng init
# /etc/init.d/mysqld restart # cho hệ thống sử dụng init

Bây giờ bạn có thể đăng nhập mysql với mật khẩu mới.

# mysql -u root -p

Login to MySQL with New Root Password

Trên đây là hướng dẫn khôi phục mật khẩu root của MySQL phiên bản 8.0 trên Linux. Chúc các bạn thành công.

Nguồn