Hướng dẫn này cung cấp các bước để đặt lại hoặc thay đổi mật khẩu gốc của máy chủ MySQL trong trường hợp người dùng quên mật khẩu. Nó giả định rằng bạn có quyền truy cập vào hệ thống để dừng và khởi động máy chủ MySQL. Hướng dẫn này dành riêng cho MySQL 8.0 trở lên, mặc dù nó sẽ hoạt động hiệu quả đối với các phiên bản MySQL cũ hơn bao gồm cả MySQL 5.7 . Chúng tôi có thể đặt lại mật khẩu gốc theo hai cách như được đề cập bên dưới.
Ghi chú :Bạn cũng có thể làm theo các hướng dẫn về MySQL - Cách cài đặt MySQL 8 trên Ubuntu, Cách xóa hoàn toàn MySQL khỏi Ubuntu và Tìm hiểu các truy vấn SQL cơ bản bằng MySQL.
Cập nhật mật khẩu
Chúng tôi chỉ cần cập nhật mật khẩu gốc của MySQL trong trường hợp chúng tôi đã biết nó. Nó có thể được thực hiện bằng cách sử dụng các lệnh như hình dưới đây. ALTER là lệnh được ưu tiên vì nó hoạt động trên MySQL 5.7 và MySQL 8 , mặc dù bạn có thể làm theo bất kỳ lệnh nào.
# Đăng nhập vào MySQL
mysql -uroot -p
# HOẶC
mysql -u root -p
# MySQL - 5.7.5 trở về trước
/> CẬP NHẬT mysql.user SET password =PASSWORD ('password') WHERE user ='root';
# MySQL - 5.7.6 và mới hơn
CẬP NHẬT mysql.user SET verify_string =PASSWORD ("password") trong đó user ='root';
# HOẶC
ĐẶT MẬT KHẨU CHO 'root' @ 'localhost' =PASSWORD ("password");
# MySQL - 5,7, 8
THAY THẾ NGƯỜI DÙNG 'root' @ 'localhost' ĐƯỢC XÁC NHẬN BỞI '';
# HOẶC
THAY THẾ NGƯỜI DÙNG 'root' @ 'localhost' ĐƯỢC XÁC ĐỊNH VỚI mysql_native_password BỞI '';
# MySQL - 8
ALTER USER' root '@' localhost 'ĐƯỢC XÁC ĐỊNH VỚI caching_sha2_password BY'';
# Flush
FLUSH PRIVILEGES;
# Ngắt kết nối
thoát;
Trong trường hợp bạn quên mật khẩu gốc của mình, bạn có thể thực hiện theo Quy trình A hoặc Quy trình B như được đề cập bên dưới.
Quy trình A - Bảo mật
Trong quá trình này, chúng tôi sẽ dừng và khởi động máy chủ MySQL để sử dụng tập lệnh init để thay đổi mật khẩu gốc.
Bước 1 - Dừng máy chủ
Chúng tôi phải dừng máy chủ như bước đầu tiên của quá trình này. Nó có thể được thực hiện bằng cách sử dụng các lệnh như được hiển thị bên dưới.
# Sử dụng init
sudo /etc/init.d/mysqld dừng
# HOẶC
sudo /etc/init.d/mysql dừng
# Sử dụng service
sudo service mysql stop
# using systemd
sudo systemctl stop mysqld.service
# HOẶC
sudo systemctl stop mysql
Bước 2 - Tạo tệp Init
Bây giờ, hãy tạo tệp init và thêm lệnh để cập nhật mật khẩu gốc như hình dưới đây.
# Tạo tệp Init - Sử dụng trình soạn thảo ưa thích của bạn
sudo nano <đường dẫn đến tệp init> init-file.txt
# Thêm truy vấn để cập nhật mật khẩu
/> # MySQL - 5.7, 8. mysql_native_password BY '';
# MySQL - 8
THAY THẾ NGƯỜI DÙNG 'root' @ 'localhost' ĐƯỢC XÁC ĐỊNH VỚI caching_sha2_password BY '';
Bước 3 - Khởi động MySQL Server
Bây giờ hãy khởi động máy chủ MySQL bằng tệp init như được hiển thị bên dưới.
# Khởi động máy chủ
sudo mysqld --init-file =<đường dẫn đến tệp init> init-file.txt &
# HOẶC
sudo mysqld_safe --init-file =<đường dẫn đến tệp init> init-file.txt &
Nó có thể tạo ra một loạt lỗi tùy thuộc vào cài đặt máy chủ của bạn.
Bạn có thể gặp lỗi khi gặp thông báo - mysqld_safe Directory '/ var / run /
# Dừng máy chủ
# Tạo thư mục
sudo mkdir -p / var / run / mysqld
# Thay đổi chủ sở hữu
sudo chown mysql :mysql / var / run / mysqld
# Bắt đầu với tệp init
sudo mysqld_safe --init-file =<đường dẫn đến tệp init> init-file.txt &
Bạn có thể gặp lỗi khi có thông báo - ERROR 2002 (HY000):Không thể kết nối với máy chủ MySQL cục bộ thông qua socket '/ var / run /
# Khởi động MySQL Server bình thường - Ubuntu
dịch vụ sudo khởi động mysql
# Điều hướng đến thư mục sock
cd / var / run
# Take backup - sock
sudo cp -rp ./mysqld ./mysqld.bak
# Dừng máy chủ bình thường - Ubuntu
sudo service mysql stop
# Khôi phục sock
sudo mv ./mysqld.bak ./mysqld
# Khởi động MySQL ở chế độ không an toàn
sudo mysqld_safe --skip-Grant -boards &
Bước 4 - Dừng và khởi động máy chủ MySQL
Bây giờ hãy dừng lại và khởi động máy chủ MySQL bằng các lệnh thông thường như được hiển thị bên dưới.
# Sử dụng init
sudo /etc/init.d/mysqld stop
sudo /etc/init.d/mysqld start
# HOẶC
sudo / etc / init. d / mysql stop
sudo /etc/init.d/mysql start
# Sử dụng dịch vụ
sudo service mysql stop
sudo service mysql start
# Sử dụng systemd
sudo systemctl stop mysqld.service
sudo systemctl start mysqld.service
# OR
sudo systemctl stop mysql
sudo systemctl start mysql
trước>
Chấm dứt các quy trình hiện có nếu được yêu cầu. Chỉ sử dụng nếu các lệnh trên không hoạt động để dừng và khởi động máy chủ.
# Tìm quy trình
ps aux | grep mysqld
ps aux | grep mysql
# Kill the process
sudo killall mysqld
sudo killall mysql
Bước 5 - Kiểm tra mật khẩu
Cuối cùng, kiểm tra mật khẩu mới bằng lệnh như hình dưới đây.
# Kiểm tra mật khẩu mới
mysql -u root -p
Đảm bảo xóa tệp init sau khi kiểm tra mật khẩu mới của bạn. Trong trường hợp không giải quyết được, bạn có thể làm theo Quy trình B .
Quy trình B - Kém bảo mật hơn
Trong quá trình này, chúng tôi sẽ dừng và sau đó khởi động máy chủ MySQL mà không yêu cầu bất kỳ mật khẩu nào để đăng nhập.
Bước 1 - Dừng máy chủ
Chúng tôi phải dừng máy chủ MySQL hiện đang chạy như là bước đầu tiên để hoàn tất quá trình này. Nó có thể được thực hiện bằng cách sử dụng các lệnh như được hiển thị bên dưới.
# Sử dụng init
sudo /etc/init.d/mysqld dừng
# HOẶC
sudo /etc/init.d/mysql dừng
# Sử dụng service
sudo service mysql stop
# using systemd
sudo systemctl stop mysqld.service
# HOẶC
sudo systemctl stop mysql
Bước 2 - Khởi động MySQL mà không cần mật khẩu
Bây giờ khởi động máy chủ MySQL với mật khẩu bị vô hiệu hóa bằng lệnh như hình dưới đây. Đảm bảo thêm
ký hiệu và (&) ở cuối lệnh này. Nó cũng cho phép --skip-networking tự động để ngăn kết nối từ xa.
# Bắt đầu mà không cần mật khẩu
sudo mysqld_safe --skip-Grant-table &
Bạn có thể gặp lỗi khi gặp thông báo - mysqld_safe Directory '/ var / run /
mysqld 'cho tệp ổ cắm UNIXkhông tồn tại . Chúng ta phải tạomysqld thư mục và tạomysql với tư cách là chủ sở hữu bằng cách sử dụng các lệnh như được hiển thị bên dưới.
# Dừng máy chủ
# Tạo thư mục
sudo mkdir -p / var / run / mysqld
# Thay đổi chủ sở hữu
sudo chown mysql :mysql / var / run / mysqld
# Bắt đầu mà không cần mật khẩu
sudo mysqld_safe --skip-Grant -boards &
Bạn có thể gặp lỗi khi có thông báo - ERROR 2002 (HY000):Không thể kết nối với máy chủ MySQL cục bộ thông qua socket '/ var / run /
mysqld /mysqld .sock ' . Trong trường hợp, hãy làm theo các lệnh được đề cập bên dưới dành cho Ubuntu để giải quyết vấn đề này.
# Start MySQL Server
sudo service mysql start
# Điều hướng đến thư mục sock
cd / var / run
# Tack backup - sock
sudo cp -rp ./mysqld ./mysqld.bak
# Dừng máy chủ
dịch vụ sudo mysql dừng
# Khôi phục sock
/> sudo mv ./mysqld.bak ./mysqld
# Khởi động MySQL ở chế độ không an toàn
sudo mysqld_safe --skip-Grant-table &
Bước 3 - Kết nối với MySQL
Bây giờ, hãy mở một thiết bị đầu cuối khác hoặc kết nối với máy chủ thông qua một trình bao khác để kết nối máy khách.
# Kết nối trực tiếp
mysql
# Kết nối dưới dạng gốc
mysql -uroot
# HOẶC
mysql -u root
Bước 4 - Thay đổi mật khẩu
Trong bước này, thay đổi mật khẩu gốc bằng các lệnh như hình dưới đây. Bạn cũng có thể tham khảo phần Cập nhật mật khẩu của hướng dẫn này để sử dụng các lệnh khác để thay đổi mật khẩu.
# Change Password
# MySQL - 5.7, 8
ALTER NGƯỜI DÙNG 'root' @ 'localhost' ĐƯỢC XÁC NHẬN BỞI '';
# HOẶC
> ALTER USER 'root' @ 'localhost' ĐƯỢC XÁC NHẬN VỚI mysql_native_password BY '';
# MySQL - 8
ALTER USER 'root' @ 'localhost' ĐƯỢC XÁC NHẬN VỚI caching_sha2_password BY '';
# Flush
FLUSH PRIVILEGES;
# Ngắt kết nối
thoát;
Bước 5 - Dừng và khởi động máy chủ MySQL
Bây giờ hãy dừng lại và khởi động máy chủ MySQL bằng các lệnh thông thường như được hiển thị bên dưới.
# Sử dụng init
sudo /etc/init.d/mysqld stop
sudo /etc/init.d/mysqld start
# HOẶC
sudo / etc / init. d / mysql stop
sudo /etc/init.d/mysql start
# Sử dụng dịch vụ
sudo service mysql stop
sudo service mysql start
# Sử dụng systemd
sudo systemctl stop mysqld.service
sudo systemctl start mysqld.service
# OR
sudo systemctl stop mysql
sudo systemctl start mysql
trước>
Chấm dứt các quy trình hiện có nếu được yêu cầu. Chỉ sử dụng nếu các lệnh trên không hoạt động để dừng và khởi động máy chủ.
# Tìm quy trình
ps aux | grep mysqld
ps aux | grep mysql
# Kill the process
sudo killall mysqld
sudo killall mysql
Bước 6 - Kiểm tra mật khẩu
Cuối cùng, kiểm tra mật khẩu mới bằng lệnh như hình dưới đây.
# Kiểm tra mật khẩu mới
mysql -u root -p
Tóm tắt
Đây là cách chúng tôi có thể đặt lại hoặc thay đổi mật khẩu của người dùng root hoặc bất kỳ người dùng nào khác trong trường hợp chúng tôi quên mật khẩu.