Port 3306 wydaje się być zamknięty na moim serwerze Ubuntu


33

Mam dwa serwery VPS i oba mają zainstalowany MySQL , jeden do testowania, a drugi do programowania. Jeden z moich serwerów nie pozwala mi łączyć się z zewnątrz. Z użytkownikiem;

„mytestuser” @ '% ”

Według wyszukiwarki portów otwartych port 3306 dla serwera naruszającego protokół wydaje się być zamknięty. Mam własne programy C ++ i Java nasłuchujące na dowolnych portach bez żadnych problemów. Dlaczego tak się dzieje i jak mogę to naprawić?

Zainstalowanym Ubuntu jest Ubuntu 11.10 (GNU / Linux 2.6.32-042stab072.10 x86_64)

Wyniki netstat -tuplena każdym serwerze

Obrażający serwer

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

Serwer działający

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

Odpowiedzi:


76

Problem polegał na tym, że serwer nasłuchiwał tylko wewnętrznie.

Usunięcie linii bind-address 127.0.0.1z /etc/mysql/my.cnfrozwiązanego problemu.

Nowsze wersje Ubuntu (≥16.04) mogą mieć tę linię /etc/mysql/mysql.conf.d/mysqld.cnf.


2
To zadziałało dla mnie. Uwaga: poprawna nazwa pliku to /etc/mysql/my.cnfnie /etc/mysql/my.conf.
Larry Battle

Zmieniłem adres powiązania, aby dopasować go do zewnętrznego adresu IP serwera i to działało dla mnie.
Buttle Butkus

Usuń linię całkowicie, a serwer będzie nasłuchiwał WSZYSTKICH interfejsów
s1mmel

Uratowałeś mi dzień, próbujesz rozwiązać ten problem przez kilka tygodni, dzięki!
budiantoip

9

Moja sugestia, jeśli jesteś pewien, że porty są zamknięte (uważam za dziwne, że VPS ma ten port zamknięty), to zmień plik konfiguracyjny MySQL, aby użyć innego.

Wystarczy otworzyć plik konfiguracyjny w terminalu sudo nano /etc/mysql/mysql.confi poszukać [mysqld]sekcji. W nim poszukaj linii, która czyta port = 3306. Zmień na inny niewykorzystany port i zapisz plik.

Następnie po prostu zrestartuj VPS lub ponownie uruchom usługę, np sudo service mysql restart.

Należy zauważyć, że jeśli plik mysql.confnie znajduje się w tym, o którym wspomniałem powyżej, może znajdować się w innych miejscach:

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

A jeśli servicepolecenie nie działa, zrób to:

sudo /etc/init.d/mysql restart

Jeśli problem będzie się powtarzał, w moim przypadku sprawdziłbym iptables (tak naprawdę usunęłbym wszystko z iptables tylko po to, żeby zacząć od nowa, jeśli może to być opcja) lub inną opcję z włączoną zaporą ogniową.

Ponieważ są to VPS, sprawdziłbym również Panel sterowania VPS, aby sprawdzić, czy ma jakąkolwiek opcję blokującą porty.

Poza tym działałbym nmapna VPS, aby zobaczyć, które porty zostały otwarte. Musisz uruchomić go spoza VPS, aby zobaczyć, które porty zostały otwarte.

netstat -tuplen dobrym pomysłem jest również sprawdzenie, jakie otwarte porty masz na serwerze, a które w trybie LISTEN.


Hej, próbowałem go na innym porcie i nadal nie działa, próbowałem też „iptables -A WEJŚCIE -i eth0 -p tcp -m tcp - port PORT -j AKCEPTUJ”, ale bez powodzenia :( .. edytuj im nie o eth0 .. może wciąż mieć nadzieję
Andy

@Andy Zaktualizowana odpowiedź w celu uwzględnienia dodatkowych sugestii.
Luis Alvarado,

Dziękuję za sugestie Luis. Zajmę się tym.
Andy,

Zaktualizowałem wyniki polecenia netstat -tuple do pytania. Wygląda na to, że jest tu problem.
Andy,


6

Używam tej metody:

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

Nie trzeba zmieniać innych plików konfiguracyjnych ani domyślnie otwierać żadnych dodatkowych portów.


sudo ufw allow 3306/tcpPróbowałem edytować, ale nie pozwoliłem
Adam

1

Może się zdarzyć, że Twoja konfiguracja znajduje się w katalogu /etc/mysql/mysql.conf.d/mysqld.cnf, sprawdź, czy tak nie jest.


1
Próbowałem to rozgryźć przez około trzy godziny, zanim to zobaczyłem, dzięki!
Oliver Ni
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.