Khôi Phục Mật Khẩu MySQL Trên Linux
Xin chào các bạn,
Trong quá trình sử dụng VPS không thể tránh khỏi việc tự nhiên quên mật khẩu root của MySQL. Vậy có khôi phục được không?
Mật khẩu MySQL thì có các bạn nhé. Bài này Z.com sẽ hướng dẫn cách khôi phục mật khẩu của user root trong MySQL trên Linux nhé.
Tuy nhiên cần lưu ý: Bạn phải đăng nhập quyền root mới có thể thực hiện khôi phục mật khẩu MySQL được:
Bước 1: Tắt dịch vụ MySQL đang chạy
1. Trên Centos:
sudo /etc/init.d/mysqld stop
2. Trên Ubuntu/Debian sử dụng câu lệnh:
sudo /etc/init.d/mysql stop
Bước 2: Khởi động MySQL không cần mật khẩu
Bạn thực hiện câu lệnh sau [phải có kí tự "&" nha]
sudo mysqld_safe --skip-grant-tables &
Bước 3: Kết nối MySQL
Thực hiện câu lệnh:
mysql -uroot
Bước 4: Thiết lập mật khẩu mới cho user root
Các bạn thực hiện lần lượt những câu lệnh sau:
use mysql;
update user set password=PASSWORD["Mật khẩu mới"] where User='root';
flush privileges;
quit
Bước 5: Tắt và bật lại MySQL
1. Trên Ubuntu/ Debian:
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
2. Trên Centos/ Fedora/ Red Hat Enterprise Linux:
sudo /etc/init.d/mysqld stop
sudo /etc/init.d/mysqld start
Bước 6: Đăng nhập MySQL với mật khẩu mới
Thực hiện lệnh:
mysql -u root -p
Sau đó nhập mật khẩu mới bạn vừa tạo phía trên.
Chúc bạn thành công!
Một ngày đẹp trời bạn vô tình quên mật khẩu của MySQL hoặc MariaDB của máy chủ Linux thì cũng đừng quá lo lắng nếu bạn vẫn có thể truy cập server với quyền quản trị cao nhất [root]. Mình sẽ hướng dẫn các bạn reset lại mật khẩu của MySQL hoặc MariaDB
Để khôi phục lại mật khẩu quản lý MySQL/MariaDB bạn cần truy cập server với quyền quản trị root
# sudo su
Bước 1. Kiểm tra lại phiên bản của MySQL hoặc MariaDB
# mysql --version
Nếu là MySQL kết quả sẽ là:
mysql Ver 15.1 Distrib 10.0.35, for Linux [x86_64] using readline 5.1
Nếu là MariaDB kết quả sẽ là:
mysql Ver 15.1 Distrib 10.0.35-MariaDB, for Linux [x86_64] using readline 5.1
Bước 2: Tắt Máy chủ cơ sở dữ liệu [Database Server]
Nếu là MySQL# sudo systemctl stop mysql
Nếu là MariaDB# sudo systemctl stop mariadb
Lưu ý bạn phải tắt Database Server thì mới khôi phục lại mật khẩu được.
Bước 3. Khởi động lại máy chủ cơ sở dữ liệu mà không kiểm tra các quyền
Chạy lệnh# mysqld_safe --skip-grant-tables --skip-networking &
Khi bạn khởi động lại máy chủ MySQL / MariaDB mà không tải các bảng grant có chứa các thông tin về quyền người dùng [user privileges] thì mặc nhiên nó sẽ cho bạn truy cập dòng lệnh database với quyền cao nhất mà không cần mật khẩu. Do đó có tùy chọn –skip-grant-tables. Tuy nhiên thì lúc thực hiện khá là nguy hiểm nếu ai đó vô tình kết nối đến database server vì thế bạn cần thêm tùy chọn –skip-networking vào câu lệnh trên.
Tiếp đến chạy lệnh dưới, nó sẽ bỏ qua hỏi mật khẩu:# mysql -u root
Dòng lệnh của MySQL sẽ hiện ra
Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 115633 Server version: 10.0.35-MariaDB MariaDB Server Copyright [c] 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [[none]]>
Bước 4. Đổi mật khẩu
Các đơn giản nhất để đổi mật khẩu MySQL là sử dụng câu lệnh ALTER USER tuy nhiên thì hiện giờ câu lệnh sẽ không dùng được do bảng grant không được tải lên. Để tải lại bảng grant thì các bạn dùng câu lệnh
MariaDB [[none]]> FLUSH PRIVILEGES;
Với MySQL phiên bản 5.7.6 trở lên hoặc MariaDB phiên bản 10.1.20 trở lên ta dùng lệnh sau để đổi mật khẩu:
MariaDB [[none]]> ALTER USER 'root'@'localhost' IDENTIFIED BY 'mat_khau_cua_ban';
Với MySQL phiên bản 5.7.5 trở xuống hoặc MariaDB phiên bản 10.1.20 trở xuống ta dùng lệnh sau
MariaDB [[none]]> SET PASSWORD FOR 'root'@'localhost' = PASSWORD['mat_khau_cua_ban'];
Chỗ ‘mat_khau_cua_ban’ các bạn thay bằng mật khẩu mà các bạn muốn nhé.
Lưu ý: Nếu lệnh ALTER USER không hoạt động thì bạn có thể thử lệnh UPDATE … SET
MariaDB [[none]]> UPDATE mysql.user SET authentication_string = PASSWORD['mat_khau_cua_ban'] WHERE User = 'root' AND Host = 'localhost';
Nhớ đến bước này phải tải lại bảng grant
MariaDB [[none]]> FLUSH PRIVILEGES;
Trong cả 2 trường hợp nếu bạn thấy hiện ra kết quả bên dưới là đã thành công
Output Query OK, 0 rows affected [0.00 sec] The password has been changed, so you can now stop the manual instance of the database server and restart it as it was before.
Bước 5: Khởi động lại Database Server
Đầu tiên bạn phải tắt hoàn toàn database server mà bạn đã khởi động thủ công tại bước 3. Lệnh bên dưới sẽ tìm kiếm PID của tiến trình MySQL\MariaDB để gửi lệnh cho các tiến trình ấy thoát ra một cách trơn tru.
Với MySQL dùng lệnh:# sudo kill 'cat /var/run/mysqld/mysqld.pid'
Với MariaDB dùng lệnh:# sudo kill '/var/run/mariadb/mariadb.pid'
Sau đó khởi động lại services dùng systemctl
Với MySQL dùng lệnh:# sudo systemctl start mysql
Với MariaDB dùng lệnh:# sudo systemctl start mariadb
Bây giờ bạn đã có thể truy cập MySQL\MariaDB bằng lệnh mật khẩu bạn vừa tạo
# mysql -u root -p