Hướng dẫn root in mysql

Bài viết sau đây hướng dẫn MySQL reset root password dễ dàng trong vòng ít hơn 10 phút. Tìm hiểu và làm theo các bước trong bài viết nhé các bạn.

Cách reset root password

Nếu bạn chưa từng gán một root password cho MySQL, server không yêu cầu password để kết nối quyền root. Tuy nhiên, việc này không an toàn. Nếu bạn đã gán một root password trước đó nhưng lại quên nó, bạn có thể gán một password mới. Sau đây là hướng dẫn MySQL reset root password, có thể áp dụng cho các hệ thống như Windows, Unix và các hệ thống giống như Unix. Cũng như các hướng dẫn chung áp dụng cho bất kỳ hệ thống nào.

Hướng dẫn root in mysql
MySQL reset root password

MySQL reset root password: Windows

Trên Windows. hãy sử dụng quy trình sau cho MySQL reset root password 'root'@'localhost'. Để đổi password cho một tài khoản root với một phần tên host khác, hãy sửa đổi các hướng dẫn để sử dụng tên host đó.

1 Đăng nhập vào hệ thống với quyền admin

2. Dừng server MySQL nếu nó đang chạy. Với một server đang chạy dịch vụ Windows, đi đến Services manager: Từ menu Start, chọn Control Panel, Administrative Tools, rồi Services. Tìm dịch vụ MySQL trong danh sách rồi dừng nó. Nếu server đang không chạy như một dịch vụ, bạn có thể cần sử dụng Task Manager để buộc dừng nó.

3. Tạo một text file chứa lệnh gán password trên một dòng duy nhất. Thay thế password với password mà bạn muốn sử dụng.

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

4. Lưu file lại. Ví dụ này giả sử rằng bạn đặt tên bài là C:\mysql-init.txt.

5. Mở một cửa sổ console để vào command prompt: Từ menu Start, chọn Run, nhập cmd như lệnh cần chạy.

6. Khởi động server MySQL với biến số hệ thống init_file được đặt để đặt tên file (lưu ý rằng dấu \ trong giá trị tùy chọn được nhân đôi):

C:\> cd "C:\Program Files\MySQL\MySQL Server 8.0\bin" C:\> mysqld     --init-file=C:\\mysql-init.txt
Lưu ý:

Nếu bạn đã cài đặt MySQL ở vị trí khác, chỉnh sửa lệnh cd theo đó.

Server thực thi nội dung của file có tên được đặt bởi biến hệ thống init_file, thay đổi password tài khoản 'root'@'localhost'.

Để có server output xuất hiện trong cửa sổ console thay vì trong log file, thêm tùy chọn --console vào lệnh mysqld.

Nếu bạn cài đặt MySQL bằng trình cài đặt MySQL Installation Wizard, bạn có thể sẽ cần chỉ định tùy chọn ---defaults-file. Ví dụ:

C:\> mysqld --defaults-file="C:\\ProgramData\\MySQL\\MySQL Server 8.0\\my.ini" --init-file=C:\\mysql-init.txt

Có thể tìm thấy cài đặt --defaults-file bằng Services Manager: Từ menu Start, chọn Control Panel, Administrative Tools, rồi Services. Tìm MySQL trong danh sách, chuột phải vào nó, rồi chọn Properties. Đường dẫn đến trường executable có chứa tùy chọn --defaults-file.

7. Sau khi server đã khởi động thành công, xóa C:\mysql-init.txt.

Bây giờ bạn đã có thể kết nối với server MySQL dưới dạng root bằng password mới. Dừng server MySQL rồi restart nó bình thường. Nếu bạn chạy server dưới dạng dịch vụ, khởi động nó từ cửa sổ Windows Services. Nếu bạn khởi động server thủ đông, sử dụng bất kỳ lệnh nào bạn thường dùng.

Xem thêm: Cách kết nối mySQL với PHP đơn giản

MySQL reset root password: Unix và các hệ thống tương tự Unix

Trên Unix, hãy sử dụng quy trình sau để reset password cho tài khoản MySQL 'root'@'localhost'. Để thay đổi password cho một tài khoản root với phần tên máy chủ khác, hãy sửa đổi các hướng dẫn để sử dụng tên máy chủ đó.

Các hướng dẫn giả sử rằng bạn khởi động server MySQL từ tài khoản đăng nhập Unix mà bạn thường sử dụng. Ví dụ: Nếu bạn chạy server bằng tài khoản đăng nhập MySQL, bạn nên đăng nhập dưới dạng MySQL trước khi sử dụng các hướng dẫn. Ngoài ra, bạn có thể đăng nhập dưới dạng root. Nhưng trong trường hợp này, bạn phải khởi động mysqld bằng tùy chọn --user=mysql. Nếu bạn khởi động server dưới dạng root mà không cần sử dụng --user-mysql, server sẽ tạo các file root-owned trong thư mục dữ liệu, chẳng hạn như log file. Và việc này có thể gây ra các sự cố liên quan đến quyền cho các khởi động server trong tương lai. Nếu nó xảy ra, bạn phải thay đổi quyền sở hữu của các tệp thành mysql hoặc xóa chúng.

Các bước hướng dẫn:

1 Đăng nhập vào hệ thống dưới dạng người dùng Unix mà server MySQL chạy (ví dụ, mysql).

2. Dừng server MySQL nếu nó đang chạy. Xác định vị trí của file .pid chứa ID process của server. Vị trí và tên chính xác của file này phụ thuộc vào phân phối, tên host và cấu hình của bạn. Các vị trí phổ biến là /var/lib/mysql/, /var/run/mysql/, và /usr/local/mysql/data/. Thông thường, tên file có phần mở rộng .pid và bắt đầu bằng mysql hoặc tên host hệ thống của bạn. Dừng server MySQL bằng cách gửi một kill bình thường (không phải kill -9) đến mysqld process. Sử dụng tên đường dẫn thực tế của file .pid trong lệnh sau:

shell> kill `cat /mysql-data-directory/host_name.pid`

Sử dụng backtick với lệnh cat. Điều này làm output của cat bị thay thế vào lệnh kill.

3. Tạo một text file có chứa lệnh gán password trên một dòng duy nhất. Thay password bằng password mà bạn muốn sử dụng

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

4. Lưu file lại. Ví dụ này giả sử bạn đặt tên cho file là /home/me/mysql-init. File chứa password, nên không cần phải lưu nó ở nơi có thể bị đọc bởi người khác. Nếu bạn chưa đăng nhập dạng mysql (dạng user mà server chạy), đảm bảo file có quyền cho phép mysql đọc nó.

5. Chạy server MySQL với biến hệ thống init_file được đặt để đặt tên file:

shell> mysqld --init-file=/home/me/mysql-init &

Server sẽ thực thi nội dung của file được được đặt tên bởi init_file khi khởi động, thay đổi password tài khoản 'root'@'localhost'.

Các tùy chọn khác cũng có thể cần thiết, tùy thuộc vào cách bạn bình thường khởi động server của mình.

Ví dụ:

-defaults-file có thể cần trước đối số init_file.

6. Sau khi server đã khởi động thành công, xóa /home/me/mysql-init.

Bây giờ bạn có thể kết nối với server MySQL dưới dạng root bằng password mới. Dừng server và restart nó bình thường.

Hướng dẫn chung

Các phần trước cung cấp các hướng dẫn reset password dành riêng cho các hệ thống Windows, Unix và hệ thống tương tự Unix. Ngoài ra, bất kỳ nền tảng nào, bạn cũng có thể reset password bằng mysql client (nhưng kém an toàn hơn):

1 Dừng server MySQL nếu cần thiết, sau đó restart nó với tùy chọn --skip-grant-tables. Điều này cho phép bất cứ ai kết nối mà không cần password và với mọi đặc quyền. Và vô hiệu hóa các câu lệnh accoutn-managenent như ALTER USER SET PASSWORD. Bởi vì nó không an toàn, nếu server được khởi động với --skip-grant-tables, nó cũng vô hiệu hóa các kết nối từ xa bằng cách bật skip_networking.

2. Kết nối với server MySQL bằng mysql client; không cần password vì server được khởi động bằng --skip-grant-tables:

shell> mysql

3. Trong mysql client, ra lệnh cho server reload lại grant tables để câu lệnh account-management có thể hoạt động:

mysql> FLUSH PRIVILEGES;

Sau đó, thay đổi password tài khoản 'root'@'localhost'. Thay thế password bằng password bạn muốn dùng. Để thay đổi password cho một tài khoản root với một phần tên server khác, hãy sửa đổi các hướng dẫn để sử dụng tên host đó.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

Bây giờ bạn có thể kết nối với server MySQL dưới dạng root bằng password mới. Dừng server và restart lại bình thường (không có tùy chọn --skip-grant-tables và không bật skip_networking).

Lời kết

Hy vọng bài viết trên sẽ giúp bạn có thể MySQL reset root password một cách đơn giản. Nếu có thắc mắc hay đóng góp ý kiến, mời bạn để lại bình luận phía dưới bài viết này. Vietnix xin chân thành cảm ơn bạn!