Thứ ba, 05/05/2020 | 00:00 GMT+7

Cách đặt lại mật khẩu gốc MySQL hoặc MariaDB của bạn

Nếu bạn quên hoặc mất password root vào database MySQL hoặc MariaDB của bạn , bạn vẫn có thể truy cập và đặt lại password nếu bạn có quyền truy cập vào server và account user được kích hoạt sudo

Hướng dẫn này sẽ trình bày cách đặt lại password root cho các version MySQL và MariaDB cũ hơn và mới hơn.

Yêu cầu

Để khôi phục password MySQL / MariaDB root của bạn, bạn cần :

  • Truy cập vào server Linux chạy MySQL hoặc MariaDB với user sudo.

Bước 1 - Xác định Phiên bản Database

Hầu hết các bản phân phối Linux hiện đại đều có MySQL hoặc MariaDB, một giải pháp thay thế phổ biến tương thích hoàn toàn với MySQL. Tùy thuộc vào database được sử dụng và version của nó, bạn cần sử dụng các lệnh khác nhau để khôi phục password root .

Bạn có thể kiểm tra version của bạn bằng lệnh sau:

  • mysql --version

Bạn sẽ thấy một số kết quả như thế này với MySQL:

MySQL output
mysql  Ver 14.14 Distrib 5.7.16, for Linux (x86_64) using  EditLine wrapper 

Hoặc xuất như thế này cho MariaDB:

MariaDB output
mysql  Ver 15.1 Distrib 5.5.52-MariaDB, for Linux (x86_64) using readline 5.1 

Ghi lại database nào và version nào bạn đang chạy, vì bạn sẽ sử dụng chúng sau này. Tiếp theo, bạn cần dừng database để có thể truy cập thủ công.

Bước 2 - Dừng server database

Để thay đổi password root , bạn phải tắt server database trước.

Bạn có thể làm điều đó cho MySQL với:

  • sudo systemctl stop mysql

Và đối với MariaDB wtih:

  • sudo systemctl stop mariadb

Sau khi server database bị dừng, bạn sẽ truy cập thủ công để đặt lại password root .

Bước 3 - Khởi động lại server database mà không cần kiểm tra quyền

Nếu bạn chạy MySQL và MariaDB mà không tải thông tin về quyền của user , nó sẽ cho phép bạn truy cập vào dòng lệnh database với quyền root mà không cần cung cấp password . Điều này sẽ cho phép bạn truy cập vào database mà không cần biết.

Để làm điều này, bạn cần ngăn database tải các bảng-cấp quyền , nơi lưu trữ thông tin quyền của user . Vì điều này có một chút rủi ro bảo mật, bạn cũng nên bỏ qua mạng để ngăn các client khác kết nối.

Khởi động database mà không cần tải bảng-cấp quyền hoặc bật mạng:

  • sudo mysqld_safe --skip-grant-tables --skip-networking &

Dấu và ở cuối lệnh này sẽ làm cho quá trình này chạy trong nền để bạn có thể tiếp tục sử dụng terminal của bạn .

Đến đây bạn có thể kết nối với database với quyền là user root, mà không cần yêu cầu password .

  • mysql -u root

Thay vào đó, bạn sẽ thấy ngay một dấu nhắc shell database .

Dấu nhắc MySQL
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.  mysql> 
Dấu nhắc MariaDB
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.  MariaDB [(none)]> 

Đến đây bạn đã có quyền truy cập root, bạn có thể thay đổi password root.

Bước 4 - Thay đổi password root

Một cách đơn giản để thay đổi password root cho các version MySQL hiện đại là sử dụng ALTER USER . Tuy nhiên, lệnh này sẽ không hoạt động ngay bây giờ vì các bảng tài trợ không được tải.

Hãy yêu cầu server database reload các bảng-cấp quyền bằng cách đưa ra lệnh FLUSH PRIVILEGES .

  • FLUSH PRIVILEGES;

Bây giờ ta có thể thay đổi password root .

Đối với MySQL 5.7.6 trở lên cũng như MariaDB 10.1.20 và mới hơn , hãy sử dụng lệnh sau.

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

Đối với MySQL 5.7.5 trở lên cũng như MariaDB 10.1.20 trở lên, hãy sử dụng:

  • SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');

Đảm bảo thay thế new_password bằng password mới mà bạn chọn.

 

Lưu ý : Nếu ALTER USER không hoạt động, nó thường là dấu hiệu của một vấn đề lớn hơn. Tuy nhiên, bạn có thể thử UPDATE ... SET để đặt lại password root .

  • UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root' AND Host = 'localhost';

Hãy nhớ reload các bảng tài trợ sau này.

Trong cả hai trường hợp, bạn sẽ thấy xác nhận lệnh đã được thực hiện thành công.

Output
Query OK, 0 rows affected (0.00 sec) 

Mật khẩu đã được thay đổi, vì vậy bây giờ bạn có thể dừng version thủ công của server database và khởi động lại nó như trước đây.

Bước 5 - Khởi động lại server database bình thường

Đầu tiên, dừng version của server database mà bạn đã khởi động theo cách thủ công ở Bước 3. Lệnh này tìm kiếm PID, hoặc ID quy trình, của quy trình MySQL hoặc MariaDB và gửi SIGTERM để yêu cầu nó thoát suôn sẻ sau khi thực hiện các thao tác dọn dẹp. Bạn có thể tìm hiểu thêm trong hướng dẫn quản lý quy trình Linux này .

Đối với MySQL, hãy sử dụng:

  • sudo kill `cat /var/run/mysqld/mysqld.pid`

Đối với MariaDB, hãy sử dụng:

  • sudo kill `/var/run/mariadb/mariadb.pid`

Sau đó, khởi động lại dịch vụ bằng systemctl .

Đối với MySQL, hãy sử dụng:

  • sudo systemctl start mysql

Đối với MariaDB, hãy sử dụng:

  • sudo systemctl start mariadb

Đến đây bạn có thể xác nhận password mới đã được áp dụng chính xác bằng lệnh:

  • mysql -u root -p

Bây giờ lệnh sẽ nhắc nhập password mới được gán. Nhập nó và bạn sẽ có quyền truy cập vào dấu nhắc database như mong đợi.

Kết luận

Đến đây bạn có quyền truy cập quản trị vào server MySQL hoặc MariaDB được khôi phục. Đảm bảo password root mới mà bạn chọn là mạnh và an toàn cũng như giữ password ở nơi an toàn.


Tags:

Các tin liên quan

Cách sử dụng Kiểu dữ liệu MySQL BLOB để lưu trữ image bằng PHP trên Ubuntu 18.04
2020-05-05
Cách cài đặt MySQL trên Ubuntu 18.04
2020-04-21
Cách cài đặt MySQL trên CentOS 8
2020-03-18
Cách triển khai phân trang trong MySQL với PHP trên Ubuntu 18.04
2020-01-29
Cách tối ưu hóa truy vấn MySQL với bộ đệm ProxySQL trên Ubuntu 16.04
2019-12-30
Cách cấu hình Cụm Galera với MySQL trên server Ubuntu 18.04
2019-12-16
Cách quản lý và sử dụng trình kích hoạt database MySQL trên Ubuntu 18.04
2019-12-10
Cách tạo một ứng dụng trích dẫn đầy cảm hứng bằng AdonisJs và MySQL
2019-11-22
Cách cài đặt MySQL mới nhất trên Debian 10
2019-07-25
Cách triển khai ứng dụng cốt lõi ASP.NET với server MySQL bằng Nginx trên Ubuntu 18.04
2019-07-23