Kết nối MySQL từ xa không thành công (10060) - Không thể kết nối với máy chủ MySQL trên domainname.com (10060)


8

Tôi đã phát triển một ứng dụng trong VB6 và đang sử dụng máy chủ cơ sở dữ liệu MySQL trực tuyến để lưu trữ dữ liệu của ứng dụng.

Lần đầu tiên tôi thử kết nối với máy chủ cơ sở dữ liệu của mình là thành công, nhưng sau khi đóng ứng dụng của tôi và khởi động lại, tôi nhận được:

Không thể kết nối với máy chủ MySQL (10060) "

Sau một thời gian (khoảng 30 phút), tôi có thể kết nối lại thành công với cơ sở dữ liệu.

  • Tôi đã đưa ra các giá trị tối đa cho tất cả các hệ thống MySQL và các biến toàn cục như Connection_timeout , Wait_timeout , v.v.
  • Tôi đã cấp tất cả các quyền cho người dùng MySQL của tôi.
  • Tường lửa trên máy tính của tôi bị tắt.
  • Tất cả các kết nối được đóng đúng khi ứng dụng đóng.

Tôi đã hỏi những người kỹ thuật cung cấp dịch vụ Cơ sở dữ liệu MySQL trực tuyến và họ đã cho tôi ba lý do sau:

  1. Máy cục bộ nơi bạn đang cố gắng kết nối không nằm trong danh sách trắng trên máy chủ.
  2. Số lượng kết nối tối đa cho người dùng đã bị vượt quá.
  3. Máy chủ MySQL đã ngừng hoạt động (mặc dù họ nói rằng máy chủ của họ không hoạt động).

Làm thế nào tôi có thể giải quyết hai lý do đầu tiên, hoặc xác định rằng chúng là nguyên nhân của vấn đề? Hoặc có thể có một vấn đề khác không được liệt kê ở đó?


+1 để sử dụng VB6 trong năm 2015!
raphael75

xem liên kết này tôi tìm thấy: superuser.com/questions/1364906/ Quảng cáo Tôi giải quyết vấn đề của tôi với nó.
FarHooD

Câu trả lời:


2

bạn cần chắc chắn rằng có:

1) người dùng được tạo có quyền truy cập từ xa, ví dụ người dùng @ 'xxxx'

2) có một kết nối từ hai máy (họ có thể ping nhau chẳng hạn hoặc truy cập lẫn nhau bằng phương thức khác) cổng được mở giữa hai máy

3) trong my.ini/my.cnfđó có chặn tham số kết nối như: bind-address=a.a.a.ahoặcskip-networking

4) dịch vụ hoạt động và chạy khi bạn cố gắng kết nối từ máy khác


0

Rất có thể đây là sự cố bên mạng và nhà cung cấp dịch vụ cơ sở dữ liệu cần tạo quy tắc mới trong tường lửa (iptables). Tuy nhiên, chúng tôi chỉ cần xác nhận một vài điều từ nhà cung cấp. Vì hành vi không ổn định (đôi khi bạn có thể kết nối, và đôi khi không). Vì vậy, đây không phải là vấn đề đặc quyền của người dùng (GRANT ALL ON ...)

  1. Hãy chắc chắn rằng họ đã bao gồm cổng nghe MySQL vào danh sách tường lửa / ngoại lệ của tường lửa. Phổ biến nhất là 3306
  2. Hãy thử tăng tham số max_connection trong my.cnf
  3. Trong my.cnf, đảm bảo ' bỏ qua mạng ' được nhận xét, Ngoài ra bind-address = 127.0.0.1
  4. Đầu ra là gì nếu chúng ta sử dụng như sau từ dòng lệnh telnet ip_mysql_server 3306

1
trên windows telnet có lẽ không khả dụng: sử dụng powershell PS C: \ Windows \ system32> New-Object System.Net.Sockets.TcpClient ("ip_mysql_server", 3306) Máy khách: System.Net.Sockets.Socket Có sẵn: 78 Đã kết nối: đúng <== điều này chỉ ra rằng bạn có thể đạt được các máy chủ ExclusiveAddressUse: ReceiveBufferSize False: 65536 SendBufferSize: 64.512 ReceiveTimeout: 0 SendTimeout: 0 LingerState: System.Net.Sockets.LingerOption NoDelay: False
user906489

0

Cung cấp đầu ra của telnet (ip): port

Tôi đã có cùng một vấn đề thời gian qua và iptables là thủ phạm tại thời điểm đó.

Khi máy chủ được khởi động lại, quy tắc iptables chuyển sang mặc định và nó không áp dụng bộ lọc cho các cổng nhất định.

Kiểm tra iptables


0

Trước tiên, hãy kiểm tra xem bạn đã cung cấp đặc quyền phù hợp cho người dùng trên máy chủ hiện tại của mình hay chưa, qua đó bạn đang cố gắng kết nối với máy chủ MySQL.

  1. Kiểm tra tên máy chủ của bạn trước
  2. Sau đó đăng nhập vào MySQL thông qua siêu người dùng như 'root'
  3. Kiểm tra xem các đặc quyền được cung cấp hay không select * from mysql.user where host="host_name"\G;
  4. Cung cấp tất cả các đặc quyền đầu tiên, sau đó cố gắng kết nối lại.

grant all on *.* to 'user'@'host_name' identified by 'Password';

Tôi hy vọng điều này hữu ích cho bạn.


0

Tôi đã dành cả ngày để đập đầu mình để cố gắng tìm ra điều này và hóa ra là Mạng Windows được đặt là Công khai thay vì Riêng tư , chặn tất cả các kết nối đến. Hy vọng điều này sẽ giúp được ai đó.


-1

một số nhà cung cấp dịch vụ lưu trữ chặn theo mặc định, truy cập từ xa vào máy chủ MySql của anh ta vì lý do bảo mật. Nếu bạn cần bỏ chặn dịch vụ truy cập từ xa, hãy nói với họ để bỏ chặn dịch vụ này.

Nếu không, hãy kiểm tra ứng dụng của bạn cục bộ, như localhost và khi điều này hoạt động tốt, thay đổi tên máy chủ, v.v. về các tham số cơ sở dữ liệu trong ứng dụng của bạn và tải lên máy chủ lưu trữ web của bạn, điều đó hoạt động tốt !!!.

Hãy cẩn thận, rằng thiết kế cơ sở dữ liệu của bạn kiểm tra với thiết kế cơ sở dữ liệu địa phương của bạn, điều này rất quan trọng !!!

Tôi hy vọng điều này hữu ích cho bạn.


2
Bạn có nghĩ rằng họ chỉ chặn mỗi lần thử thứ hai?
dezso

-1

Hai điều cần thêm cho người dùng mariadb:

1) my.cnf cũng dành cho chúng tôi => ở đó tôi tìm thấy bind-address = 127.0.0.1dòng

2) bạn phải khởi động lại dịch vụ sau khi thay đổi tệp my.cnf

Hi vọng điêu nay co ich

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.