Không thể kết nối với máy chủ mysql trên xxxx?

Tôi đang cố gắng thiết lập kết nối mysql cơ bản từ phiên bản công cụ tính toán google trong một dự án sang phiên bản google cloud sql (thế hệ 2) trong một dự án khác

Tôi đã làm điều này nhiều lần trước đây mà không có vấn đề gì. Bạn chỉ cần thêm địa chỉ IP của phiên bản điện toán google vào danh sách các mạng được ủy quyền cho phiên bản google cloud sql. Điều này đã luôn hoạt động trong quá khứ nhưng nó không hoạt động bây giờ

Điều duy nhất mà tôi có thể nghĩ về sự khác biệt trong tình huống này là gần đây tôi đã thử nghiệm sử dụng cloudsql-proxy để thiết lập kết nối từ một phiên bản gce khác với cùng một phiên bản google cloud sql. Đây có phải là vấn đề không?

Tôi chỉ cần kết nối để làm việc. Có một công việc xung quanh?

P. S. Tôi đã làm theo "quy tắc ngón tay cái" và đăng câu hỏi kỹ thuật này lên stackoverflow trước

https. // stackoverflow. com/câu hỏi/44863898/error-2003-hy000-cant-connect-to-mysql-server-on-x-x-x-x-110

Lỗi này xảy ra do cấu hình mặc định mà cơ sở dữ liệu MySQL của bạn hiện đang sử dụng. Cấu hình này chỉ cho phép kết nối từ người dùng 'root' khi đến từ 'localhost' chứ không phải các dải địa chỉ IP khác

cách giải quyết

Sau đây là cách giải quyết cho tình huống trên trong trường hợp bạn phải sử dụng người dùng "root", tuy nhiên điều này không được khuyến khích vì điều này tạo ra lỗ hổng bảo mật. Để biết cách khắc phục được đề xuất cho sự cố này, vui lòng xem Giải pháp bên dưới

  • Mở MySQL Terminal của bạn;
    • Trong Linux

      mysql -u root -p

    • Trong Windows, mở dòng lệnh MySQL
  • Chạy các truy vấn sau

    USE mysql;
    SELECT user,host FROM user;

    Ghi chú. Bạn sẽ thấy rằng người dùng "root" chỉ liên quan đến máy chủ "localhost"

  • Khi đã xác minh rằng người dùng root chỉ có quyền kết nối trong máy chủ cục bộ, hãy chạy truy vấn sau

    GRANT ALL PRIVILEGES ON *.* TO root@my_ip IDENTIFIED BY ‘root_password‘ WITH GRANT OPTION;

    Trong đó "my_ip" là ip máy chủ JIRA của bạn và "root_password" là mật khẩu người dùng root

  • Nếu bạn muốn, hãy chạy lại truy vấn đầu tiên để xác minh rằng người dùng root có quyền kết nối với IP máy chủ của JIRA;

Nghị quyết

Vui lòng thiết lập người dùng và cơ sở dữ liệu mới theo các hướng dẫn được đề xuất sau đây. Những hướng dẫn này đến trực tiếp từ tài liệu chính thức của chúng tôi. Kết nối JIRA với MySQL

  • Tạo người dùng cơ sở dữ liệu mà JIRA sẽ kết nối dưới dạng (e. g. võ sĩ đánh máy bay). Hãy nhớ tên người dùng cơ sở dữ liệu này, vì nó sẽ được sử dụng để định cấu hình kết nối của JIRA với cơ sở dữ liệu này trong các bước tiếp theo

    mysql> CREATE USER ''@'' IDENTIFIED BY '';

  • Tạo cơ sở dữ liệu cho JIRA để lưu trữ các sự cố trong (e. g. jiradb). Cơ sở dữ liệu phải có bộ ký tự UTF8. Nhập lệnh sau từ bên trong máy khách lệnh MySQL. Hãy nhớ tên cơ sở dữ liệu này, vì nó sẽ được sử dụng để định cấu hình kết nối của JIRA với cơ sở dữ liệu này trong các bước tiếp theo

    CREATE DATABASE jiradb CHARACTER SET utf8 COLLATE utf8_bin;

  • Đảm bảo rằng người dùng có quyền kết nối với cơ sở dữ liệu và quyền tạo và điền vào bảng. Chúng có thể được cung cấp với những điều sau đây

    GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER,INDEX on .* TO ''@'' IDENTIFIED BY '';
    flush privileges;

Mẹo

Để xác nhận xem các quyền đã được cấp thành công hay chưa, hãy đăng nhập vào máy chủ DB với người dùng JIRA DB và chạy lệnh bên dưới

Khi bạn kết nối với phiên bản ApsaraDB RDS cho MySQL hoặc phiên bản ApsaraDB RDS cho MariaDB TX, thông báo lỗi sau sẽ hiển thị

  • LỖI 2003 (HY000). Không thể kết nối với máy chủ MySQL trên 'XXX' (10038, 10060 hoặc 110)
  • Không thể kết nối với cơ sở dữ liệu. XXX

Giải pháp

Lưu ý các mục sau

  • Trước khi bạn thực hiện các hoạt động có rủi ro cao như sửa đổi thông số kỹ thuật hoặc dữ liệu của phiên bản Alibaba Cloud, chúng tôi khuyên bạn nên kiểm tra khả năng khắc phục thảm họa và khả năng chịu lỗi của phiên bản để đảm bảo an toàn dữ liệu
  • Trước khi bạn sửa đổi thông số kỹ thuật hoặc dữ liệu của phiên bản Đám mây Alibaba, chẳng hạn như phiên bản Dịch vụ tính toán đàn hồi (ECS) hoặc phiên bản ApsaraDB RDS, chúng tôi khuyên bạn nên tạo ảnh chụp nhanh hoặc bật sao lưu cho phiên bản. Ví dụ: bạn có thể bật sao lưu nhật ký cho phiên bản ApsaraDB RDS
  • Nếu bạn đã cấp cho người dùng cụ thể quyền đối với thông tin nhạy cảm, chẳng hạn như tên người dùng và mật khẩu hoặc gửi thông tin nhạy cảm trong Bảng điều khiển quản lý đám mây của Alibaba, chúng tôi khuyên bạn nên sửa đổi thông tin nhạy cảm càng sớm càng tốt.

Chủ đề này mô tả hai phương pháp sau

Sự cố do bạn không thể kết nối phiên bản ECS với phiên bản RDS qua mạng nội bộ

  1. Đảm bảo rằng phiên bản ECS và phiên bản RDS nằm trong cùng một khu vực. Nếu phiên bản ECS và phiên bản RDS nằm ở các khu vực khác nhau, thì các phiên bản này không thể giao tiếp trực tiếp qua mạng nội bộ. Trong trường hợp này, hãy sử dụng một trong các phương pháp sau để giải quyết vấn đề
    • Phương pháp 1. Phát hành hoặc hủy đăng ký phiên bản ECS hoặc phiên bản RDS. Sau đó, mua phiên bản ECS hoặc phiên bản RDS nằm trong khu vực được chỉ định
    • Phương pháp 2. Thay đổi loại mạng của phiên bản ECS và phiên bản RDS thành Virtual Private Cloud (VPC). Để biết thêm thông tin, hãy xem Thay đổi loại mạng của phiên bản RDS. Ngoài ra, hãy thiết lập kết nối bằng cách sử dụng Express Connect giữa các VPC của phiên bản ECS và phiên bản RDS
    • Phương pháp 3. Kết nối phiên bản ECS với phiên bản RDS bằng cách sử dụng điểm cuối công khai của phiên bản RDS. Phương pháp này không thể đảm bảo hiệu suất, tính bảo mật hoặc tính ổn định tối ưu của các phiên bản. Nếu bạn sử dụng Phương pháp 3, chúng tôi khuyên bạn nên định cấu hình cài đặt mạng hợp lý cho phiên bản ECS và phiên bản RDS
  2. Đảm bảo rằng phiên bản ECS và phiên bản RDS nằm trong cùng một loại mạng. Nếu một phiên bản nằm trong mạng cổ điển và phiên bản kia nằm trong VPC, hãy sử dụng một trong các phương pháp sau để giải quyết vấn đề
    • Các phương thức phù hợp trong các tình huống trong đó phiên bản ECS nằm trong VPC và phiên bản RDS nằm trong mạng cổ điển
      • Phương pháp 1. Đây là phương pháp được khuyến khích. Thay đổi loại mạng của phiên bản RDS từ mạng cổ điển sang VPC. Để biết thêm thông tin, hãy xem Thay đổi loại mạng của phiên bản ApsaraDB RDS
        Ghi chú. Phiên bản ECS và phiên bản RDS phải nằm trong cùng một VPC để giao tiếp với nhau qua mạng nội bộ
      • Phương pháp 2. Mua phiên bản ECS nằm trong mạng cổ điển. Tuy nhiên, VPC cung cấp bảo mật cao hơn mạng cổ điển. Chúng tôi khuyên bạn nên sử dụng VPC
        Ghi chú. Không thể di chuyển các phiên bản ECS từ VPC sang mạng cổ điển
      • Phương pháp 3. Kết nối phiên bản ECS với phiên bản RDS bằng cách sử dụng điểm cuối công khai của phiên bản RDS. Phương pháp này không thể đảm bảo hiệu suất, tính bảo mật hoặc tính ổn định tối ưu của các phiên bản
    • Các phương thức phù hợp trong các tình huống trong đó phiên bản ECS nằm trong mạng cổ điển và phiên bản RDS nằm trong VPC
      • Phương pháp 1. Đây là phương pháp được khuyến khích. Thay đổi loại mạng của phiên bản ECS từ mạng cổ điển sang VPC. Để biết thêm thông tin, hãy xem Thay đổi loại mạng của phiên bản ECS
        Ghi chú. Phiên bản ECS và phiên bản RDS phải nằm trong cùng một VPC để giao tiếp với nhau qua mạng nội bộ
      • Phương pháp 2. Thay đổi loại mạng của phiên bản RDS từ VPC thành mạng cổ điển. Tuy nhiên, VPC cung cấp bảo mật cao hơn mạng cổ điển. Chúng tôi khuyên bạn nên sử dụng VPC
      • Phương pháp 3. Sử dụng tính năng ClassicLink để thiết lập kết nối mạng nội bộ giữa phiên bản ECS và phiên bản RDS
        Ghi chú. Nếu không thể thiết lập kết nối mạng nội bộ giữa phiên bản ECS và phiên bản RDS sau khi bật tính năng ClassicLink, hãy xem Tôi phải làm gì nếu không thể thiết lập kết nối giữa mạng cổ điển và VPC?
      • Phương pháp 4. Kết nối phiên bản ECS với phiên bản RDS bằng cách sử dụng điểm cuối công khai của phiên bản RDS. Phương pháp này không thể đảm bảo hiệu suất, tính bảo mật hoặc tính ổn định tối ưu của các phiên bản
  3. Nếu cả phiên bản ECS và phiên bản RDS đều nằm trong VPC, hãy đảm bảo rằng các phiên bản này nằm trong cùng một VPC
    Nếu phiên bản ECS và phiên bản RDS nằm trong các VPC khác nhau, hãy sử dụng một trong các phương pháp sau để giải quyết vấn đề
    • Phương pháp 1. Đây là phương pháp được khuyến khích. Di chuyển phiên bản RDS sang VPC chứa phiên bản ECS. Để biết thêm thông tin, hãy xem Di chuyển một phiên bản ApsaraDB RDS sang một VPC khác và một vSwitch khác hoặc Thay đổi loại mạng của một phiên bản ApsaraDB RDS. Thay đổi loại mạng của phiên bản RDS từ VPC thành mạng cổ điển. Sau đó, thay đổi loại mạng của phiên bản RDS thành VPC. Khi bạn thay đổi loại mạng của phiên bản RDS thành VPC, hãy chọn VPC chứa phiên bản ECS
    • Phương pháp 2. Tạo phiên bản Mạng doanh nghiệp đám mây (CEN) để thiết lập kết nối riêng giữa các VPC của phiên bản ECS và phiên bản RDS
    • Phương pháp 3. Kết nối phiên bản ECS với phiên bản RDS bằng cách sử dụng điểm cuối công khai của phiên bản RDS. Phương pháp này không thể đảm bảo hiệu suất, tính bảo mật hoặc tính ổn định tối ưu của các phiên bản
  4. Đảm bảo rằng địa chỉ IP của phiên bản ECS được thêm vào danh sách trắng địa chỉ IP của phiên bản RDS. Để biết thêm thông tin về cách định cấu hình danh sách trắng địa chỉ IP cho phiên bản RDS, hãy xem Định cấu hình danh sách trắng địa chỉ IP cho phiên bản ApsaraDB RDS
  5. Kiểm tra kết nối giữa phiên bản RDS và phiên bản ECS. Chạy lệnh sau trên phiên bản ECS để kiểm tra xem phiên bản ECS có thể kết nối với cổng được liên kết với điểm cuối của phiên bản RDS hay không.
    telnet [$RDS_IP] [$Port]
    Ghi chú
    • [$RDS_IP] là điểm cuối của phiên bản RDS
    • [$Port] là số cổng của phiên bản RDS. Nếu cổng của phiên bản RDS đã được sửa đổi, hãy thay thế số cổng bằng số cổng mới. Số cổng mặc định của phiên bản ApsaraDB RDS cho MySQL là 3306 và số cổng mặc định của phiên bản ApsaraDB RDS cho SQL Server là 3433
    • Nếu phiên bản ECS có thể kết nối với cổng được liên kết với điểm cuối của phiên bản RDS, thì phiên bản ECS có thể kết nối với phiên bản RDS qua mạng nội bộ
    • Nếu phiên bản ECS không thể kết nối với cổng được liên kết với điểm cuối của phiên bản RDS, thì bạn phải khắc phục sự cố mạng của phiên bản ECS. Để biết thêm thông tin, hãy xem Tôi nên làm gì nếu không thể kết nối với phiên bản RDS?

Sự cố do bạn không thể kết nối thiết bị chứ không phải phiên bản ECS với phiên bản RDS qua Internet

Bạn chỉ có thể kết nối một thiết bị chứ không phải phiên bản ECS với phiên bản RDS qua Internet. Nếu kết nối không thành công, hãy sử dụng một trong các phương pháp sau để giải quyết vấn đề

  1. Kiểm tra xem địa chỉ IP của thiết bị có được thêm vào danh sách trắng địa chỉ IP của phiên bản RDS hay không. Nếu địa chỉ IP của thiết bị không được thêm vào danh sách trắng địa chỉ IP của phiên bản RDS, bạn phải thêm địa chỉ IP vào danh sách trắng địa chỉ IP của phiên bản RDS. Để biết thêm thông tin, xem

    Tại sao MySQL không kết nối với máy chủ?

    Dưới đây là một số lý do có thể xảy ra lỗi Không thể kết nối với máy chủ MySQL cục bộ. mysqld không chạy trên máy chủ cục bộ . Kiểm tra danh sách quy trình của hệ điều hành của bạn để đảm bảo có quy trình mysqld. Bạn đang chạy một máy chủ MySQL trên Windows với nhiều kết nối TCP/IP tới nó.

    Kết nối MySQL là TCP hay UDP?

    Cổng 3306 mặc định của MySQL là TCP (Giao thức điều khiển truyền dẫn).