Wir haben einen MySQL Server in einer der entfernten virtuellen Maschinen (Windows Server 2008). Bis gestern konnten wir uns mit Hilfe der auf unserem lokalen Rechner installierten Workbench mit dem MySQL-Server verbinden.
Gestern wurde der Computer neu gestartet, auf dem die virtuelle Maschine installiert ist. Danach können wir keine Verbindung mehr zu MYSQL herstellen. Obwohl ich diese bestimmte VM ping und remote verbinden kann. Ich kann die Abfragen sogar innerhalb der Workbench ausführen, die in der VM installiert ist.
Ich bin nicht besonders gut in Netzwerken oder sicherheitsrelevanten Dingen. Bitte helfen Sie mir, dieses Problem zu lösen.
Fehler:
Ihr Verbindungsversuch für den Benutzer 'root' von Ihrem Host zum Server ist fehlgeschlagen. ABC: 3306: Verbindung zum MySQL Server auf 'ABC' (10060) nicht möglich.
Wirklich könnte dies eine Größenordnung von möglichen Gründen sein, hoffentlich ist das ein Anfang:
Überprüfen Sie das Basisnetzwerk
Öffnen Sie von der virtuellen MySQL-Maschine eine Eingabeaufforderung und geben Sie IPCONFIG /ALL
ein. Dadurch werden Ihnen alle IP-Adressen angezeigt, die an verschiedene Netzwerkadapter gebunden sind.
Überprüfen Sie, ob die IP-Adresse, mit der Sie verbunden sind, dort aufgeführt ist. Möglicherweise hat die virtuelle Maschine eine neue IP-Adresse von DHCP erhalten, statt nach dem Neustart eine statische IP-Adresse zu haben.
Hostname vs IP
Sie sollten die Auflösung des Hostnamens überprüfen. Aus dem angegebenen Fehler geht hervor, dass Sie sich mit einem Hostnamen und nicht mit einer Server-IP verbinden. Überprüfen Sie, ob Ihr Computer den Hostnamen mit der richtigen IP-Adresse auflösen kann - es könnte sich auch lohnen, den Hostnamen für die tatsächliche IP-Adresse des Servers in der Verbindungszeichenfolge zu ändern.
MySQL Konfigurationsdatei
Sie haben gesagt, dass Sie MySQL unter Windows ausführen. Es war üblich, das my.cnf
in my.ini
umzubenennen. Die Konfigurationsdatei für ältere Versionen von MySQL vor 4.1.5 wurde normalerweise in c:\my.ini
oder c:\windows\my.ini
gespeichert. Für Versionen danach ist der Standardpfad das Installationsverzeichnis %PROGRAMDATA%\MySQL\MySQL Server xxx
.
Wenn Sie die Konfigurationsdatei gefunden haben, öffnen Sie sie bitte im Editor (oder einem ähnlichen Texteditor), suchen Sie den [mysqld]
-Abschnitt und stellen Sie sicher, dass port=
der Port ist, mit dem Sie sich verbinden wollen und bind-address=
die IP Adresse, mit der Sie sich verbinden möchten.
Serverports
Öffnen Sie vom virtuellen MySQL-Server eine Eingabeaufforderung und geben Sie netstat –ano
ein. Dies zeigt Ihnen eine Liste der Prozesse und welche IPs / Ports sie überwachen. Der MySQL-Server sollte hier aufgelistet sein und sollte auf demselben Port und derselben IP-Adresse horchen, wie die Konfigurationsdatei definiert.
Windows-Firewall
Sie sollten eine Firewall-Regel haben, um MySQL zu erlauben, die folgende wird eine auf dem Standard-Port von 3306 hinzufügen
%Vor%Identifizieren Sie, ob dies maschinenspezifisch ist
Sie könnten die MySQL Workbench-Anwendung auf einer anderen Workstation einrichten und versuchen, eine Verbindung herzustellen, um festzustellen, ob es sich um ein globales Problem handelt oder nur um ein Problem, das mit Ihrer spezifischen Workstation zusammenhängt.
Der mysql-Administrator Ihrer Datenbank sollte eine Remote-Verbindung zum mysql-Server ermöglichen. ändere das in my.cnf:
%Vor%und kommentiere das:
%Vor%Wahrscheinlich wurde Ihre Konfiguration für eine geänderte IP-Adresse eingerichtet. Standardmäßig lässt mysql keine Verbindung von Remote-Hosts zu, es sei denn, Sie geben explizit Berechtigungen für einen bestimmten Benutzer in einem bestimmten Schema oder einer Gruppe von Schemas, z. B. wenn Sie Folgendes getan haben:
%Vor%Vielleicht haben Sie tatsächlich die Berechtigung auf Ihre eigene IP-Adresse gesetzt, das ist die Adresse Ihres lokalen Rechners, und wenn Ihr lokaler Rechner (nicht der entfernte Server) seine IP-Adresse geändert hat, wird mysql nicht zulassen Sie verbinden, es sei denn, Sie haben die IP-Adresse "1.2.3.4", die Sie offensichtlich nicht mehr haben, wenn Sie eine dynamische IP-Adresse haben (üblich bei DSL / Kabel-Verbindungen)
Also verbinden Sie sich über SSH oder Telnet oder was auch immer Sie mit Ihrem Windows-Server und gehen Sie zu mysql als root und tun dies:
%Vor%Das zeigt Ihnen die Zuschüsse für alle Benutzer und wie sie sich verbinden dürfen. Wenn Sie dort nicht Ihre lokale IP-Adresse oder einen Platzhalter sehen (der es Ihnen ermöglichen würde, eine Verbindung von einem Remote-Computer zum Server herzustellen), müssen Sie Folgendes einrichten:
%Vor%Wo USERNAME ist natürlich Ihr Benutzer. Beachten Sie, dass nach dem Ein ein Platzhalter / Punkt / Platzhalter vorhanden ist. Dies bedeutet, dass dieser Benutzer von jedem Benutzer aus einem beliebigen Netzwerk eine Verbindung mit einem beliebigen Schema (Datenbank für mysql) herstellen können soll. Ich würde jedoch empfehlen, dass Sie nur die Berechtigung für den Benutzer für das spezifische Schema ausführen, zu dem Sie eine Verbindung herstellen müssen.
Dann, wenn Sie tatsächlich die richtigen Informationen hatten und immer noch keine Verbindung herstellen können, verwenden Sie einen Portscanner wie nmap oder so ähnlich das, um einen Port-Scan zu machen und zu sehen, ob mysql ist:
Wenn 1 wahr ist, dann überprüfen Sie 2, weil es möglicherweise eine Fehlkonfiguration des Ports gibt. Aber wenn einer dieser 2 Punkte funktioniert, klingt es definitiv nicht wie eine Netzwerkkonfiguration, sondern eine Benutzereinstellung oder etwas anderes.
dieser Befehl sollte den Trick für alle Benutzer tun @Gustavo Rubio hat bereits die richtige Erklärung gegeben.
Um sicherzustellen, welche Ports geöffnet sind, führen Sie cmd in der virtuellen Maschine aus und geben Sie ein.
%Vor%Die my.cnf befindet sich MySQL-Installationspfad \ MySQL \ MySQL Server xxx Stellen Sie sicher, dass Sie das Original sichern, bevor Sie
ändern Verbindung zum [lokalen] MySQL Server
Testen der MySQL Server-Installation unter Microsoft Windows
MySQL Workbench: Verwalten Sie MySQL auf Windows Servern der Windows Weg
Zum ersten Mal müssen Sie testen und sicherstellen, dass Ihre Verbindung zu mysql nicht von der Firewall blockiert wird.
Um die Firewall auf jedem Host in Ihrem Cluster zu deaktivieren, führen Sie die folgenden Schritte auf jedem Host aus.
1. Speichern Sie den vorhandenen iptables-Regelsatz.
%Vor%2. Deaktivieren Sie iptables.
Für RHEL, CentOS, Oracle und Debian:
%Vor%und
%Vor%Für SLES:
%Vor%und
%Vor%Für Ubuntu:
%Vor%Tags und Links mysql networking port firewall windows-server-2008-r2