MySQL là hệ thống quản lý cơ sở dữ liệu nguồn mở bao gồm các tính năng tiên tiến, công cụ quản lý và hỗ trợ kỹ thuật. Mặc dù máy chủ không yêu cầu mật khẩu để kết nối với quyền root nếu bạn chưa đặt root password trên cơ sở dữ liệu MySQL của mình, nhưng việc không gán mật khẩu root sẽ không an toàn. Để tiếp tục thực hiện các chức năng và nhiệm vụ cấp cao nhất, bạn cần biết root password (mật khẩu gốc) của mình. Rõ ràng, cơ sở dữ liệu phổ biến nhất này có root password và nếu bạn quên root password hãy cùng chúng tôi tham khảo bài viết này để tìm hiểu về cách đặt lại MySQL Root Password trong Linux và Windows.
Điều kiện tiên quyết để đặt lại MySQL Root Password trong Linux và Windows
Để hướng dẫn này hoạt động chính xác, hãy cung cấp các tùy chọn bên dưới.
- Truy cập vào Server hoặc VPS Linux/Windows chạy MySQL.
- Cơ sở dữ liệu MySQL hiện có.
- Đặc quyền của quản trị viên trên máy lưu trữ cơ sở dữ liệu MySQL.
- Một trình soạn thảo văn bản (Tùy thuộc vào làm việc trên Windows hay Linux, Notepad và Vim sẽ là trợ lý của bạn theo mặc định).
- Truy cập vào giao diện dòng lệnh/Terminal.
Cách đặt lại MySQL Root Password trong Linux
Hãy thực hiện các bước bắt buộc của phần này để tìm hiểu cách đặt lại MySQL Root Password trong Linux. Để thay đổi mật khẩu cho tài khoản MySQL ‘root’@’localhost’ trên Unix, hãy làm theo các bước bên dưới. Sửa đổi hướng dẫn để sử dụng phần tên máy chủ mới nếu bạn muốn thay đổi mật khẩu của tài khoản gốc.
Bước 1. Đăng nhập với tư cách người dùng MySQL
Các hướng dẫn giả định trước rằng bạn khởi chạy máy chủ MySQL bằng tài khoản đăng nhập Unix mà bạn thường sử dụng. Ví dụ, bạn nên đăng nhập bằng tên mysql trước khi làm theo các bước nếu bạn chạy máy chủ bằng tài khoản đăng nhập đó. Bạn cũng có thể đăng nhập với quyền root, nhưng làm như vậy yêu cầu bạn khởi động mysqld bằng tùy chọn –user=mysql.
Bước 2. Định vị tệp .pid
Tìm tệp .pid cho dịch vụ MySQL. Nó chứa ID của tiến trình chạy máy chủ. Tất cả bản phân phối, tên máy chủ và cấu hình của bạn sẽ ảnh hưởng đến tên và vị trí chính xác của tệp này. /var/lib/mysql, /var/run/mysqld và /usr/local/mysql/data là những vị trí điển hình. Trong hầu hết các trường hợp, tên tệp kết thúc bằng .pid và bắt đầu bằng mysqld hoặc tên máy chủ hệ thống của bạn.
Bước 3. Dừng quá trình máy chủ mysqld
Dừng máy chủ MySQL nếu nó đang chạy. Mở một dòng lệnh và chạy lệnh bên dưới để hủy quy trình mysqld:
kill `cat /mysql-data-directory/host_name.pid`
Khi sử dụng lệnh cat, hãy sử dụng dấu gạch ngược thay vì dấu ngoặc kép chuyển tiếp. Điều này dẫn đến lệnh kill thay thế đầu ra của cat.
Bước 4. Tạo tệp mật khẩu MySQL
Để tạo tệp mật khẩu, hãy mở trình soạn thảo văn bản ưa thích của bạn và chạy:
sudo vim
Bây giờ, hãy thêm dòng sau vào tệp để tạo tệp văn bản chứa câu lệnh gán mật khẩu trên một dòng.
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword';
Hãy nhớ rằng mật khẩu nên được thay đổi thành mật khẩu bạn muốn sử dụng. Cố gắng sử dụng một mật khẩu mạnh. Ngoài ra, hãy lưu ý rằng máy chủ bạn đang sử dụng hiện tại sẽ có thể thực thi lệnh. Thay localhost bằng tên máy chủ chính xác nếu bạn đang kết nối với một máy khác. Cuối cùng, lưu tệp vào home/me/mysql-init.
Lưu ý: Không lưu tệp ở bất kỳ đâu mà người dùng khác có thể truy cập vì tệp chứa mật khẩu. Đảm bảo rằng tệp có các quyền cho phép mysql xem nó nếu bạn không đăng nhập với tư cách mysql, người dùng mà máy chủ chạy với tư cách đó.
Bước 5. Khởi động Máy chủ MySQL
Đặt biến hệ thống init_file thành tên mong muốn trước khi khởi động máy chủ MySQL và áp dụng các thay đổi cho mật khẩu:
mysqld --init-file=/home/me/mysql-init &
Khi máy chủ khởi động, máy chủ chạy mã có trong tệp được chỉ định bởi biến hệ thống init_file, cập nhật mật khẩu cho tài khoản root@localhost. Tùy thuộc vào cách bạn thường khởi động máy chủ của mình, có thể cần nhiều lựa chọn hơn. Chẳng hạn, trước đối số init_file, –defaults-file có thể được yêu cầu. Xóa /home/me/mysql-init sau khi máy chủ khởi động thành công (Bước 4):
Mật khẩu mới bây giờ sẽ cho phép bạn kết nối với máy chủ MySQL với quyền root. Khởi động lại máy chủ bình thường sau khi dừng nó.
=>> Cách cài đặt Ruby trên Ubuntu
Đặt lại MySQL Root Password trong Windows
Có thể thay đổi mật khẩu của tài khoản MySQL ‘root’@’localhost’ trên Windows bằng cách sử dụng các bước bên dưới. Sửa đổi hướng dẫn để sử dụng phần tên máy chủ mới nếu bạn muốn thay đổi mật khẩu của tài khoản gốc. Đăng nhập với tư cách quản trị viên vào hệ thống của bạn và làm theo các bước bên dưới để đặt lại MySQL root pasword trong Windows.
Bước 1. Dừng máy chủ MySQL
Để dừng máy chủ MySQL nếu nó đang chạy, trước tiên hãy nhấn phím “Windows + R” và nhập cụm từ bên dưới, rồi nhấp vào OK.
services.msc
Bây giờ, hãy tìm “MySQL” và chọn tùy chọn “STOP”.
Bước 2. Khởi chạy Notepad với tư cách Administrator
Trong bước này, hãy chạy trình soạn thảo văn bản “Notepad” với quyền “Administrator”. Để thực hiện việc này, hãy tìm kiếm Notepad trên menu hoặc sử dụng đường dẫn: menu > Windows Accessories > Notepad.
Bước 3. Tạo một tệp văn bản mới
Vào trình soạn thảo văn bản của bạn, nhập dòng sau và lưu tệp Notepad.
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword';
Đừng quên thay thế NewPassword bằng mật khẩu bạn chọn.
Để lưu tệp vào ổ C: ở đầu ổ cứng của bạn, hãy sử dụng menu File > Save As. Quyết định tên tệp, chẳng hạn như mysql-init.txt.
Kết quả là lệnh localhost sẽ cập nhật mật khẩu trên hệ thống cục bộ của bạn. Thay đổi localhost thành tên máy chủ nếu bạn đang thay đổi mật khẩu trên một hệ thống qua mạng.
Bước 4. Mở Command Prompt và Khởi động lại MySQL Server
Chạy thiết bị đầu cuối Windows “Command Prompt” với tư cách quản trị viên.
Để thay đổi thư mục nơi cài đặt MySQL, hãy sử dụng lệnh “cd”:
cd "C:\Program Files\MySQL\MySQL Server 8.0\bin"
Sau đó, tệp văn bản chứa mật khẩu mới sẽ được khởi tạo với đường dẫn đích trước khi chạy lệnh “mysqld” để đặt lại mật khẩu. Vì vậy, hãy nhập như sau:
mysqld --init-file=C:\\mysql-init.txt
Bây giờ, mật khẩu người dùng đã được đặt lại thành công và bạn có thể đăng nhập vào máy chủ MySQL của mình với quyền root bằng mật khẩu mới.
Lưu ý: Sử dụng tên tệp thay thế mà bạn đã chọn ở Bước 2 sau dấu gạch chéo kép.
Bước 5. Xác minh việc đặt lại MySQL Root Password
Chạy lệnh sau để xác minh:
mysql -u root -p
Khi bạn xác nhận thay đổi mật khẩu, hãy xóa lại tệp C:\mysql-init.txt sau khi MySQL khởi chạy.
=>> 7 tường lửa (Firewall) tốt nhất dành cho Windows
Cách đặt lại MySQL Root Password trong nền tảng không phải Unix/Windows
Các phương pháp đặt lại mật khẩu được cung cấp trong các phần trên dành cho các hệ thống giống như Windows, Unix và tương tự Unix. Để thay thế (mặc dù kém an toàn hơn), bạn có thể đặt lại mật khẩu bằng ứng dụng khách MySQL trên bất kỳ nền tảng nào bằng cách làm theo các bước dưới đây:
1. Nếu cần, hãy dừng máy chủ MySQL và khởi động lại với tùy chọn –skip-grant-tables. Điều này sẽ vô hiệu hóa các dòng quản lý tài khoản như thay đổi người dùng và đặt mật khẩu, cho phép mọi người kết nối với toàn quyền mà không cần mật khẩu. Nếu máy chủ được khởi chạy bằng tùy chọn –-skip-grant-tables, nó cũng sẽ tắt các kết nối từ xa bằng cách kích hoạt skip_networking vì điều này không an toàn.
2. Sử dụng máy khách mysql, kết nối với máy chủ MySQL. Vì máy chủ đã được khởi động bằng lệnh –skip-grant-tables nên không cần mật khẩu.
$> mysql
3. Yêu cầu máy chủ tải lại các bảng trong máy khách mysql để các lệnh quản lý tài khoản hoạt động:
mysql> FLUSH PRIVILEGES;
Sau đó sửa đổi mật khẩu cho tài khoản ‘root’@’localhost‘. Mật khẩu nên được thay đổi thành mật khẩu bạn muốn sử dụng. Sửa đổi hướng dẫn để sử dụng phần tên máy chủ mới nếu bạn muốn thay đổi mật khẩu của tài khoản gốc.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
Mật khẩu mới bây giờ sẽ cho phép bạn kết nối với máy chủ MySQL với quyền root. Máy chủ phải được dừng và khởi động lại bình thường (không có tùy chọn –skip-grant-tables hoặc biến hệ thống skip_networking được bật).
Trong bài viết này, chúng tôi đã chia sẻ cách đặt lại MySQL Root Password trong Linux và Windows. Các phương pháp này rất tiện dụng để đạt được sự an toàn cho máy chủ của bạn. Đừng quên để lại những thắc mắc của bạn trong phần bình luận để được giải đáp nhanh nhất. Chúc các bạn thành công!