Wir haben einen MySQL-Server in einer der entfernten virtuellen Maschinen (Windows Server 2008). Bis gestern konnten wir mithilfe der auf unserem lokalen Computer installierten Workbench eine Verbindung zum MySQL-Server herstellen.
Gestern gab es einen Neustart der Maschine, auf der die virtuelle Maschine installiert ist. Danach können wir keine Verbindung zu MySQL herstellen. Obwohl ich diese bestimmte VM per Ping und Remote verbinden kann. Ich kann sogar die Abfragen in der in der VM installierten Workbench ausführen.
Ich bin nicht besonders gut in Sachen Netzwerk oder Sicherheit. Bitte helfen Sie mir, dieses Problem zu lösen.
Error :
Ihr Verbindungsversuch ist für den Benutzer 'root' von Ihrem Host zu Server bei ABC fehlgeschlagen: 3306: Verbindung zum MySQL-Server unter 'ABC' kann nicht hergestellt werden (10060)
Wirklich könnte dies eine Vielzahl von möglichen Gründen sein, hoffentlich ist dies ein Anfang:
Grundnetz überprüfen
Öffnen Sie von der virtuellen MySQL-Maschine aus eine Eingabeaufforderung, und geben Sie IPCONFIG /ALL
ein. Daraufhin werden alle IP-Adressen angezeigt, die an verschiedene Netzwerkadapter gebunden sind.
Stellen Sie sicher, dass die IP-Adresse, mit der Sie verbunden sind, dort aufgeführt ist. Die virtuelle Maschine hat möglicherweise eine neue IP-Adresse vom DHCP-Server und keine statische IP-Adresse nach dem Neustart.
Hostname vs IP
Sie sollten die Auflösung des Hostnamens überprüfen. Aufgrund Ihres zitierten Fehlers würde dies bedeuten, dass Sie eine Verbindung zu einem Hostnamen und nicht zu einer Server-IP herstellen. Überprüfen Sie, ob der Computer mit der richtigen IP-Adresse in den Hostnamen aufgelöst werden kann. Es kann auch sinnvoll sein, den Hostnamen für die tatsächliche IP-Adresse des Servers in der Verbindungszeichenfolge zu ändern.
MySQL-Konfigurationsdatei
Sie haben gesagt, Sie betreiben MySQL unter Windows. Es war üblich, 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. Bei nachfolgenden Versionen ist das Standardverzeichnis normalerweise %PROGRAMDATA%\MySQL\MySQL Server xxx
.
Wenn Sie die Konfigurationsdatei gefunden haben, öffnen Sie sie in Notepad (oder einem ähnlichen Texteditor), suchen Sie den Abschnitt [mysqld]
und stellen Sie sicher, dass port=
den Port, zu dem Sie eine Verbindung herstellen möchten, und bind-address=
die IP-Adresse, zu der Sie eine Verbindung herstellen möchten.
Serverports
Öffnen Sie vom virtuellen MySQL-Server aus eine Eingabeaufforderung, und geben Sie netstat –ano
ein. Daraufhin wird eine Liste der Prozesse und der IP-Ports/Ports angezeigt, die sie überwachen. Der MySQL-Server sollte hier aufgeführt sein und über denselben Port und dieselbe IP-Adresse überwachen, die die Konfigurationsdatei definiert.
Windows-Firewall
Sie sollten über eine Firewall-Regel verfügen, um MySQL zuzulassen. Folgendes wird am Standardport von 3306 hinzugefügt
netsh advfirewall firewall add rule name="MySQL Server" action=allow protocol=TCP dir=in localport=3306
Identifizieren Sie, ob dies maschinenspezifisch ist
Sie können die MySQL Workbench-Anwendung auf einer anderen Arbeitsstation einrichten und versuchen, eine Verbindung herzustellen, um festzustellen, ob es sich hierbei um ein globales Problem oder nur um ein Problem handelt, das mit Ihrer jeweiligen Arbeitsstation zusammenhängt.
der MySQL-Administrator Ihrer Datenbank sollte eine Remote-Verbindung zum MySQL-Server zulassen. ändere das in my.cnf:
bind-address = 127.0.0.1 # this shoul be your mysql server ip
und kommentiere dies:
# skip-networking
Möglicherweise wurde Ihre Konfiguration für eine IP-Adresse eingerichtet, die sich geändert hat. Standardmäßig erlaubt mysql keine Verbindung von entfernten Hosts, es sei denn, Sie geben explizit Berechtigungen für einen bestimmten Benutzer in einem bestimmten Schema oder einer Gruppe von Schemas an. Wenn Sie beispielsweise Folgendes tun:
GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'1.2.3.4' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
Vielleicht haben Sie tatsächlich die Erlaubnis auf Ihre eigene IP-Adresse gesetzt, d. H. Auf die Adresse Ihres lokalen Computers. Wenn Ihr lokaler Computer (nicht der Remote-Server) seine IP-Adresse geändert hat, können Sie sich bei mysql nicht anmelden, es sei denn Sie haben die IP-Adresse "1.2.3.4", die Sie offensichtlich nicht mehr besitzen, wenn Sie eine dynamische IP-Adresse haben (üblich bei DSL-/Kabelverbindungen).
Verbinden Sie sich also über SSH oder Telnet oder was auch immer Sie mit Ihrem Windows-Server und gehen Sie als root zu mysql:
SELECT * from information_schema.user_privileges;
Das zeigt Ihnen die Berechtigungen für alle Benutzer und wie sie sich verbinden dürfen. Wenn Ihre lokale IP-Adresse dort nicht aufgeführt ist oder ein Platzhalter (mit dem Sie von einem beliebigen Remotecomputer aus eine Verbindung zum Server herstellen können), müssen Sie sie wie folgt einrichten:
GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
Wo ist USERNAME natürlich Ihr Benutzer. Nach dem Ein gibt es einen Platzhalter/Punkt/Platzhalter, der bedeutet, dass dieser Benutzer eine Verbindung zu einem beliebigen Schema (Datenbank, für MySQL) von jedem Benutzer aus einem beliebigen Netzwerk herstellen kann. Ich würde jedoch empfehlen, dass Sie nur den Zuschuss für den Benutzer für das bestimmte Schema gewähren, zu dem Sie eine Verbindung herstellen müssen.
Danach, wenn Sie tatsächlich die richtigen Informationen hatten und immer noch keine Verbindung herstellen können, verwenden Sie einen Portscanner wie nmap oder ähnliches, um einen Port-Scan durchzuführen und zu prüfen, ob mysql:
Wenn 1 wahr ist, dann prüfen Sie 2, da der Port möglicherweise falsch konfiguriert ist. Wenn jedoch einer dieser beiden Punkte funktioniert, klingt dies definitiv nicht nach einer Netzwerkkonfiguration, sondern nach einer Benutzereinstellung oder etwas anderem.
Haben Sie versucht, zu überprüfen, ob jemand Ihrem angegebenen Port Sicherheit hinzugefügt hat, z. B. 3306.
GRANT ALL ON *.* to [email protected]'%' IDENTIFIED BY 'password';
dieser Befehl sollte den Trick für alle Benutzer erfüllen. @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 Folgendes ein.
netstat -a
TCP 127.0.0.1:3360 Hostname:3360 LISTENING
Die my.cnf befindet sich unter Mysql-Installationspfad\MySQL\MySQL Server xxx. Stellen Sie sicher, dass Sie das Original sichern, bevor Sie es ändern
Ich kann keine Verbindung zum [lokalen] MySQL-Server herstellen
Testen der MySQL Server-Installation unter Microsoft Windows
MySQL Workbench: Verwalten von MySQL auf Windows-Servern auf Windows-Weise
Zum ersten Mal müssen Sie testen und sicherstellen, dass Ihre Verbindung zu mysql nicht von der Firewall blockiert wird.
Führen Sie die folgenden Schritte für jeden Host aus, um die Firewall auf jedem Host in Ihrem Cluster zu deaktivieren.
1. Speichern Sie den vorhandenen iptables-Regelsatz.
iptables-save > /root/firewall.rules
2. iptables deaktivieren.
Für RHEL, CentOS, Oracle und Debian:
chkconfig iptables off
und
/etc/init.d/iptables stop
Für SLES:
chkconfig SuSEfirewall2_setup off
und
rcSuSEfirewall2 stop
Für Ubuntu:
service ufw stop
https://www.cloudera.com/documentation/enterprise/5-7-x/themen/install_cdh_disable_iptables.html
Abhängig von Ihrem Setup, aber wenn Sie cPanel verwenden, gehen Sie einfach zu RemoteMYSQL und geben Sie Ihren Host ein. Sie können auch einen Platzhalter verwenden. Unten arbeitete für mich, als ich den Fehler bekam
Msgstr "Konnte keine Verbindung zum DB - Server '' als Benutzer ''. Port: Host '' ist nicht Zur Verbindung mit diesem MySQL Server erlaubt