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:
- Cài đặt MySQL 8.0 trên Fedora 28/27/26
- Cài đặt MySQL 5.7.9 trên RHEL/CentOS 7/6/5 và Fedora 23/22/2
- Sao lưu và phục hồi database trong MySQL
- Câu lệnh mysql cơ bản
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';
# 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é.
# 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
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';
# 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