Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Đặt lại mật khẩu gốc của MySQL

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 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 / mysqld 'cho tệp ổ cắm UNIX không tồn tại . Chúng ta phải tạo mysqld thư mục và tạo mysql 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 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 / mysqld / mysqld .sock ' . Trong trường hợp như vậy, hãy làm theo các lệnh được đề cập bên dưới để giải quyết.

 # 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 UNIX không tồn tại . Chúng ta phải tạo mysqld thư mục và tạo mysql 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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Múi giờ MySQL

  2. Lỗi MySQL 1449:Người dùng được chỉ định làm trình xác định không tồn tại

  3. Kết nối với MySQL bằng Python

  4. Hàm chuỗi MySQL (Danh sách đầy đủ)

  5. MySQL Fire Trigger cho cả Chèn và Cập nhật