Đổi pass mysql trong linux

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

Bài Viết Liên Quan

Chủ Đề