ich habe zweiVPSServer, und beide habenMySQLinstalliert, einer zum Testen und einer für die Entwicklung. Einer meiner Server lässt mich keine Verbindung von außen herstellen. Mit dem Benutzer;
'meinTestbenutzer'@'%'
Entsprechendein offener Portfinder, Port 3306 für den betreffenden Server scheint geschlossen zu sein. Ich habe eigene C++- und Java-Programme, die auf beliebigen Ports ohne Probleme lauschen. Warum passiert das und wie kann ich es beheben?
Installiertes Ubuntu ist Ubuntu 11.10 (GNU/Linux 2.6.32-042stab072.10 x86_64)
Ergebnisse netstat -tuple
auf jedem Server
Anstößiger Server
tcp 0 0 localhost.lo:submission *:* LISTEN root 39967664 -
Funktionierender Server
tcp 0 0 *:mysql *:* LISTEN mysql 1847519288 -
Antwort1
Das Problem bestand darin, dass der Server nur intern zuhörte.
bind-address 127.0.0.1
Durch das Entfernen der Zeile /etc/mysql/my.cnf
wurde das Problem gelöst.
Neuere Versionen von Ubuntu (≥16.04) enthalten möglicherweise diese Zeile /etc/mysql/mysql.conf.d/mysqld.cnf
.
Antwort2
Wenn Sie sicher sind, dass die Ports geschlossen sind (ich finde es merkwürdig, wenn dieser Port bei einem VPS geschlossen ist), empfehle ich, die Konfigurationsdatei von MySQL so zu ändern, dass eine andere verwendet wird.
Öffnen Sie einfach die Konfigurationsdatei im Terminal sudo nano /etc/mysql/mysql.conf
und suchen Sie nach dem [mysqld]
Abschnitt. Suchen Sie darin nach der Zeile mit dem Text port = 3306
. Ändern Sie sie in einen anderen, nicht verwendeten Port und speichern Sie die Datei.
Starten Sie dann einfach entweder den VPS neu oder starten Sie den Dienst neu, etwa sudo service mysql restart
.
Bitte beachten Sie: Wenn sich die Datei mysql.conf
nicht an dem oben genannten Ort befindet, kann sie sich an diesen anderen Orten befinden:
/etc/my.conf
/etc/my.cnf
/etc/mysql/my.conf
Und wenn der service
Befehl nicht funktioniert, dann gehen Sie folgendermaßen vor:
sudo /etc/init.d/mysql restart
Wenn das Problem weiterhin besteht, würde ich in meinem Fall prüfeniptables(Ich würde tatsächlich alles in iptables löschen, nur um neu zu beginnen, wenn dies eine Option wäre) oder jede andere Firewall-fähige Option.
Da es sich um VPS handelt, würde ich auch im VPS-Kontrollfeld nachsehen, ob es eine Option zum Blockieren von Ports gibt.
Abgesehen davon würde ich nmap
es auf dem VPS ausführen, um zu sehen, welche Ports Sie geöffnet haben. Sie müssen es von außerhalb des VPS ausführen, um zu sehen, welche Ports geöffnet wurden.
netstat -tuplen
Es ist auch eine gute Idee, zu sehen, welche geöffneten Ports Sie auf dem Server haben und welche sich im LISTEN-Modus befinden.
Antwort3
Ich habe dies behoben, indem ich bind-address 127.0.0.1
es in bind-address 0.0.0.0
geändert habe /etc/mysql/mysql.conf.d
, sodass MySQL auf allen Ports lauscht.
Außerdem habe ich ein MySQL-Benutzerkonto für die Remote-Nutzung eingerichtet. Weitere Einzelheiten finden Sie unterHost 'xxx.xx.xxx.xxx' darf keine Verbindung zu diesem MySQL-Server herstellen.
Antwort4
Es kann vorkommen, dass sich Ihre Konfiguration im Verzeichnis befindet /etc/mysql/mysql.conf.d/mysqld.cnf
. Überprüfen Sie, ob dies nicht der Fall ist.