Port 3306 scheint auf meinem Ubuntu-Server geschlossen zu sein

33

Ich habe zwei VPS- Server und beide haben MySQL installiert, einen zum Testen und einen für die Entwicklung. Auf einem meiner Server kann ich keine Verbindung von außen herstellen. Mit dem Benutzer;

'mytestuser' @ '%'

Laut einem Open Port Finder scheint Port 3306 für den betreffenden Server geschlossen zu sein. Ich habe eigene C ++ - und Java-Programme, die problemlos auf beliebigen Ports lauschen. Warum passiert das und wie kann ich es beheben?

Ubuntu installiert ist Ubuntu 11.10 (GNU / Linux 2.6.32-042stab072.10 x86_64)

Ergebnisse von netstat -tupleauf jedem Server

Beleidigender Server

tcp        0      0 localhost.lo:submission *:*                     LISTEN      root       39967664    -

Arbeitsserver

tcp        0      0 *:mysql                 *:*                     LISTEN      mysql      1847519288  -
Andy
quelle

Antworten:

76

Das Problem war, dass der Server nur intern empfing.

Das Entfernen der Linie bind-address 127.0.0.1von /etc/mysql/my.cnflöste das Problem.

Neuere Versionen von Ubuntu (≥16.04) enthalten möglicherweise diese Zeile /etc/mysql/mysql.conf.d/mysqld.cnf.

Andy
quelle
2
Das hat bei mir funktioniert. Beachten Sie, dass der korrekte Dateiname /etc/mysql/my.cnfnicht ist /etc/mysql/my.conf.
Larry Battle
Ich habe meine Bindeadresse so geändert, dass sie mit der externen IP-Adresse des Servers übereinstimmt, und das hat bei mir funktioniert.
Buttle Butkus
Entfernen Sie die Leitung vollständig und der Server hört ALLE Schnittstellen ab
s1mmel
Sie haben mir den Tag gerettet und ein paar Wochen lang versucht, dieses Problem zu lösen. Danke!
budiantoip
9

Mein Vorschlag, wenn Sie sicher sind, dass die Ports geschlossen sind (ich finde es seltsam, dass ein VPS diesen Port geschlossen hat), ist, die Konfigurationsdatei von MySQL so zu ändern, dass eine andere verwendet wird.

Öffnen Sie einfach die Konfigurationsdatei im Terminal sudo nano /etc/mysql/mysql.confund suchen Sie den [mysqld]Abschnitt. Suchen Sie darin nach der Zeile, die lautet port = 3306. Ändern Sie ihn in einen anderen nicht verwendeten Port und speichern Sie die Datei.

Dann einfach entweder den VPS neu starten oder den Dienst wie neu starten sudo service mysql restart.

Zu beachten ist, dass die Datei, wenn sie mysql.confsich nicht in der oben genannten befindet, sich an folgenden Stellen befinden kann:

/etc/my.conf
/etc/my.cnf
/etc/mysql/my.conf

Und wenn der serviceBefehl nicht funktioniert, dann tun Sie dies:

sudo /etc/init.d/mysql restart

Wenn das Problem weiterhin besteht, würde ich in meinem Fall iptables überprüfen (ich würde tatsächlich alles in iptables löschen, nur um neu zu starten, wenn dies eine Option sein könnte) oder jede andere Firewall-fähige Option.

Da es sich um VPS handelt, überprüfe ich auch die VPS-Systemsteuerung, um festzustellen, ob eine Option zum Blockieren von Ports verfügbar ist.

Abgesehen davon würde ich nmapauf dem VPS laufen, 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 sie geöffnet haben.

netstat -tuplen Es ist auch eine gute Idee zu sehen, welche Ports auf dem Server geöffnet sind und welche sich im LISTEN-Modus befinden.

Luis Alvarado
quelle
Hey, ich habe es auf einem anderen Port ausprobiert und es hat sich immer noch nicht verhalten. Ich habe auch versucht, 'iptables -A INPUT -i eth0 -p tcp -m tcp -dport PORT -j ACCEPT', aber kein Glück :( .. bearbeite ich nicht o eth0 .. könnte noch Hoffnung haben
Andy
@Andy Die Antwort wurde aktualisiert und enthält nun einige weitere Vorschläge.
Luis Alvarado
Vielen Dank für die Anregungen Luis, ich werde mich darum kümmern.
Andy
Ich habe die Ergebnisse von netstat -tuple auf die Frage aktualisiert. Anscheinend gibt es hier ein Problem.
Andy
6

Ich habe dies behoben, indem ich bind-address 127.0.0.1zu bind-address 0.0.0.0in /etc/mysql/mysql.conf.dgeändert habe (so dass MySQL alle Ports überwacht).

Außerdem habe ich ein MySQL-Benutzerkonto für die Remoteverwendung eingerichtet (siehe https://stackoverflow.com/a/24171107/132374 ).

Jon Onstott
quelle
6

Ich benutze diese Methode:

sudo ufw status
sudo ufw allow XXXX/tcp
# use a port other than the default/predictable 3306
# work outside, and close the door when you are done
sudo ufw deny XXXX/tcp

Keine Notwendigkeit, andere Konfigurationsdateien zu ändern, und keine zusätzlichen Ports, die standardmäßig geöffnet sind.

ftcosta
quelle
sudo ufw allow 3306/tcpIch habe versucht, zu bearbeiten, ließ mich aber nicht
Adam
1

Es kann vorkommen, dass sich Ihre Konfiguration im Verzeichnis /etc/mysql/mysql.conf.d/mysqld.cnfbefindet. Überprüfen Sie, ob dies nicht der Fall ist.

Winter
quelle
1
Ich habe ungefähr drei Stunden lang versucht, es herauszufinden, bevor ich das gesehen habe, danke!
Oliver Ni