Remote-MySQL-Verbindung schlägt fehl (10060) - "Verbindung zum MySQL-Server unter domainname.com (10060) nicht möglich"


8

Ich habe eine Anwendung in VB6 entwickelt und verwende einen Online-MySQL-Datenbankserver zum Speichern der Daten meiner Anwendung.

Das erste Mal, wenn ich versuche, eine Verbindung zu meinem Datenbankserver herzustellen, ist erfolgreich, aber nachdem ich meine Anwendung geschlossen und erneut gestartet habe, erhalte ich:

Verbindung zum MySQL-Server (10060) nicht möglich "

Nach einiger Zeit (ca. 30 Minuten) kann ich mich wieder erfolgreich mit der Datenbank verbinden.

  • Ich habe allen MySQL-System- und globalen Variablen wie connection_timeout , wait_timeout usw. Maximalwerte gegeben .
  • Ich habe meinem MySQL-Benutzer alle Berechtigungen erteilt.
  • Die Firewall auf meinem Computer ist ausgeschaltet.
  • Alle Verbindungen werden ordnungsgemäß geschlossen, wenn die Anwendung geschlossen wird.

Ich habe die technischen Mitarbeiter, die den Online-MySQL-Datenbankdienst bereitstellen, gefragt und sie haben mir diese drei Gründe genannt:

  1. Der lokale Computer, von dem aus Sie eine Verbindung herstellen möchten, wird auf dem Server nicht in die Whitelist aufgenommen.
  2. Die maximale Anzahl von Verbindungen für den Benutzer wurde überschritten.
  3. Der MySQL-Server war zu diesem Zeitpunkt ausgefallen (obwohl sie sagten, dass ihr Server nicht ausgefallen war).

Wie kann ich die ersten beiden Gründe lösen oder feststellen, dass sie die Ursache des Problems sind? Oder könnte es ein anderes Problem geben, das dort nicht aufgeführt ist?


+1 für die Verwendung von VB6 im Jahr 2015!
Raphael75

siehe diesen Link, den ich gefunden habe: superuser.com/questions/1364906/… Ich löse mein Problem damit.
FarHooD

Antworten:


2

Sie müssen sicherstellen, dass es Folgendes gibt:

1) Benutzer erstellt, der Fernzugriff hat, z. B. Benutzer @ 'xxxx'

2) Es besteht eine Verbindung zwischen den beiden Computern (sie können sich beispielsweise gegenseitig anpingen oder über eine andere Methode aufeinander zugreifen). Der Port wird zwischen den beiden Computern geöffnet

3) In my.ini/my.cnfgibt es blockierende Verbindungsparameter wie: bind-address=a.a.a.aoderskip-networking

4) Der Dienst ist aktiv, wenn Sie versuchen, eine Verbindung vom anderen Computer herzustellen


0

Dies ist höchstwahrscheinlich ein netzwerkseitiges Problem, und der Datenbankdienstanbieter muss eine neue Regel in der Firewall (iptables) erstellen. Trotzdem müssen wir nur einige Dinge vom Anbieter bestätigen. Da das Verhalten nicht stabil ist (gelegentlich können Sie eine Verbindung herstellen und manchmal auch nicht). Es handelt sich also nicht um ein Problem mit Benutzerrechten (GRANT ALL ON ...)

  1. Stellen Sie sicher, dass der MySQL-Listening-Port in die Entsperrungs- / Ausnahmeliste der Firewall aufgenommen wurde. Am häufigsten ist es 3306
  2. Versuchen Sie, die zunehmende max_connection Parameter in my.cnf
  3. Stellen Sie in my.cnf sicher, dass ' Netzwerk überspringen ' auskommentiert ist. Binden Sie auch die Adresse = 127.0.0.1
  4. Was ist die Ausgabe, wenn wir Folgendes von der Befehlszeile telnet ip_mysql_server 3306 verwenden

1
Unter Windows ist Telnet höchstwahrscheinlich nicht verfügbar: Verwenden Sie Powershell PS C: \ Windows \ system32> New-Object System.Net.Sockets.TcpClient ("ip_mysql_server", 3306) Client: System.Net.Sockets.Socket Verfügbar: 78 Verbunden: True <== Dies zeigt an, dass Sie den Server erreichen können. ExclusiveAddressUse: False ReceiveBufferSize: 65536 SendBufferSize: 64512 ReceiveTimeout: 0 SendTimeout: 0 LingerState: System.Net.Sockets.LingerOption NoDelay: False
user906489

0

Stellen Sie die Ausgabe des Telnet (IP): -Ports bereit

Ich hatte das letzte Mal das gleiche Problem und das iptables ist der Schuldige zu dieser Zeit.

Beim Neustart des Servers wird die iptables-Regel auf Standard zurückgesetzt und der Filter für bestimmte Ports nicht angewendet.

Überprüfen Sie die iptables


0

Überprüfen Sie zunächst, ob Sie dem Benutzer auf Ihrem aktuellen Host, über den Sie versuchen, eine Verbindung zum MySQL-Server herzustellen, die richtigen Berechtigungen erteilt haben.

  1. Überprüfen Sie zuerst Ihren Hostnamen
  2. Melden Sie sich dann über einen Superuser wie 'root' bei MySQL an.
  3. Überprüfen Sie, ob die Berechtigungen bereitgestellt werden oder nicht select * from mysql.user where host="host_name"\G;
  4. Geben Sie zuerst alle Berechtigungen ein und versuchen Sie dann erneut, eine Verbindung herzustellen.

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

Ich hoffe das ist hilfreich für dich.


0

Ich habe einen ganzen Tag damit verbracht, mir den Kopf zu zerbrechen, um dies herauszufinden, und es stellte sich heraus, dass das Windows-Netzwerk als öffentlich statt als privat festgelegt wurde, wodurch alle eingehenden Verbindungen blockiert werden. Hoffe das hilft jemandem.


-1

Einige Hosting-Anbieter blockieren standardmäßig aus Sicherheitsgründen den Remotezugriff auf seine MySQL-Server. Wenn Sie den RAS-Dienst entsperren müssen, teilen Sie ihnen mit, dass dieser Dienst entsperrt werden soll.

Andernfalls testen Sie Ihre App lokal als localhost und wenn dies einwandfrei funktioniert, ändern Sie den Hostnamen usw. Datenbankparameter in Ihrer App und laden Sie sie auf Ihren Webhosting-Server hoch, das funktioniert einwandfrei !!!.

Achten Sie darauf, dass Ihr Datenbankdesign mit Ihrem lokalen Datenbankdesign übereinstimmt. Dies ist sehr wichtig !!!

Ich hoffe das ist hilfreich für dich.


2
Denken Sie, dass sie nur jeden zweiten Versuch blockieren?
Dekso

-1

Zwei Dinge, die für Mariadb-Benutzer hinzugefügt werden müssen:

1) die my.cnf ist auch für uns => da habe ich die bind-address = 127.0.0.1linie gefunden

2) Sie müssen den Dienst neu starten, nachdem Sie die Datei my.cnf geändert haben

Hoffe das hilft

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.