Không được phép kết nối với máy chủ MySQL này dữ liệu MySQL?

Trong bài viết nhanh này, bạn sẽ học cách giải quyết lỗi “ERROR 1130 (HY000). Máy chủ x. x. x. x không được phép kết nối với máy chủ MySQL này” lỗi trong triển khai cơ sở dữ liệu MySQL/MariaDB trên hệ thống Linux. Đây là một trong những lỗi kết nối cơ sở dữ liệu từ xa phổ biến mà người dùng gặp phải

Môi trường thử nghiệm

  • IP máy chủ ứng dụng. 10. 24. 96. 5
  • IP máy chủ cơ sở dữ liệu. 10. 24. 96. 6

Chúng tôi đã gặp lỗi khi kiểm tra kết nối cơ sở dữ liệu từ một trong các máy chủ ứng dụng của chúng tôi đến máy chủ cơ sở dữ liệu, sử dụng ứng dụng khách mysql như được hiển thị

# mysql -u database_username -p -h 10.24.96.6
Không được phép kết nối với máy chủ MySQL này dữ liệu MySQL?
Không được phép kết nối với máy chủ MySQL này dữ liệu MySQL?
Lỗi kết nối cơ sở dữ liệu từ xa MySQL

Lỗi chỉ ra rằng máy chủ 10. 24. 96. 5 mà người dùng cơ sở dữ liệu đang kết nối không được phép kết nối với máy chủ MySQL. Trong trường hợp này, chúng tôi phải thực hiện một số thay đổi đối với máy chủ cơ sở dữ liệu để cho phép người dùng kết nối từ xa

Trên máy chủ cơ sở dữ liệu, chúng tôi phải kiểm tra máy chủ mà người dùng ở trên được phép kết nối từ

# mysql -u root -p

Chạy các lệnh SQL sau để kiểm tra máy chủ của người dùng

MariaDB [(none)]> SELECT host FROM mysql.user WHERE user = "database_username";
Không được phép kết nối với máy chủ MySQL này dữ liệu MySQL?
Không được phép kết nối với máy chủ MySQL này dữ liệu MySQL?
Kiểm tra máy chủ người dùng MySQL

Từ đầu ra của lệnh, người dùng chỉ được phép kết nối với máy chủ cơ sở dữ liệu từ máy chủ cục bộ. Vì vậy, chúng tôi cần cập nhật máy chủ của người dùng như sau

Chạy lệnh GRANT sau để bật quyền truy cập MySQL cho người dùng từ xa từ máy chủ từ xa. Đảm bảo thay thế “10. 24. 96. 6” với địa chỉ IP của hệ thống từ xa, và “database_password” với mật khẩu mà bạn muốn “database_username” sử dụng

MariaDB [(none)]> GRANT ALL ON database_name.* to 'database_username'@'10.24.96.5' IDENTIFIED BY 'database_password';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> SELECT host FROM mysql.user WHERE user = "database_username";
Không được phép kết nối với máy chủ MySQL này dữ liệu MySQL?
Không được phép kết nối với máy chủ MySQL này dữ liệu MySQL?
Cho phép người dùng truy cập cơ sở dữ liệu MySQL từ xa từ máy chủ từ xa

Để cấp cho người dùng quyền truy cập từ xa từ tất cả máy chủ trên mạng, hãy sử dụng cú pháp bên dưới

MariaDB [(none)]> GRANT ALL ON database_name.* to 'database_username'@'10.24.96.%' IDENTIFIED BY 'database_password';

Sau khi thực hiện các thay đổi trên, hãy thử kết nối từ xa với máy chủ cơ sở dữ liệu MySQL một lần nữa. Kết nối sẽ thành công như trong ảnh chụp màn hình sau

# mysql -u database_username -p -h 10.24.96.6
Không được phép kết nối với máy chủ MySQL này dữ liệu MySQL?
Không được phép kết nối với máy chủ MySQL này dữ liệu MySQL?
Kết nối với máy chủ cơ sở dữ liệu MySQL từ xa

Chúng tôi hy vọng giải pháp này đã giúp bạn khắc phục lỗi kết nối từ xa Mysql của mình. Nếu có bất kỳ câu hỏi nào, hãy liên hệ với chúng tôi qua biểu mẫu phản hồi bên dưới

Trong MySQL, các máy chủ được cho phép (được đưa vào danh sách trắng) cho mỗi người dùng. Vì vậy, lỗi này có nghĩa là người dùng mà bạn đang cố kết nối không có máy chủ lưu trữ từ xa của bạn trong danh sách cho phép. Có khả năng bạn đang cố kết nối với người dùng 'root', theo mặc định, chỉ cho phép kết nối từ máy chủ cục bộ. Đây là những gì nó trông giống như trong cấu hình người dùng

Không được phép kết nối với máy chủ MySQL này dữ liệu MySQL?
MySQL Workbench – Người dùng và Đặc quyền

Để khắc phục điều này, hãy thêm người dùng cho phép máy chủ của bạn. Để cho phép bất kỳ máy chủ lưu trữ nào, hãy sử dụng ký hiệu đại diện %. Bạn có thể thêm người dùng từ dòng lệnh hoặc bằng ứng dụng khách giao diện người dùng (chẳng hạn như MySQL Workbench hoặc phpMyAdmin). Tôi sẽ hiển thị một ví dụ bên dưới về việc thêm người dùng cho phép bất kỳ máy chủ nào

Ghi chú. Tôi không khuyên bạn nên sửa đổi người dùng 'root'

Giải pháp – Thêm người dùng cho phép bất kỳ máy chủ nào

Giả sử bạn đang cố kết nối với máy chủ MySQL nội bộ đang được sử dụng trong môi trường nhà phát triển, vì vậy bạn muốn thêm người dùng cho phép bất kỳ máy chủ nào và được cấp tất cả các đặc quyền

Đầu tiên, vào máy chủ đang chạy MySQL. Sau đó chạy Máy khách dòng lệnh MySQL (mysql. exe)

Thêm người dùng bằng mật khẩu và cho phép tất cả các máy chủ

mysql> CREATE USER 'username'@'%' IDENTIFIED BY 'password123';

Code language: Bash (bash)

Ghi chú. % là ký tự đại diện có nghĩa là tất cả các máy chủ. Vì vậy, @’%’ có nghĩa là bạn đang cho phép người dùng này kết nối từ bất kỳ máy chủ nào

Cấp tất cả các đặc quyền cho người dùng cho tất cả các lược đồ

mysql> GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;

Code language: Bash (bash)

Ghi chú. VỚI TÙY CHỌN CẤP cho phép người dùng cấp đặc quyền cho người dùng khác

Bây giờ bạn sẽ có thể kết nối từ máy chủ từ xa bằng người dùng/mật khẩu bạn vừa tạo. Nếu bạn vẫn gặp lỗi kết nối, bạn có thể cần xóa các đặc quyền đã lưu trong bộ nhớ cache (tôi không cần)

________số 8_______

bắt đầu mysql. exe thủ công

Nếu bạn gặp lỗi như 'mysql. exe không xác định' hoặc nếu bạn không thể tìm thấy lối tắt Máy khách dòng lệnh MySQL, thì bạn có thể khởi động nó theo cách thủ công bằng cách sử dụng đường dẫn đầy đủ và chuyển vào một số tham số