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 -tuple
na 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 -
/etc/mysql/my.cnf
nie/etc/mysql/my.conf
.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.conf
i poszukać[mysqld]
sekcji. W nim poszukaj linii, która czytaport = 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.conf
nie znajduje się w tym, o którym wspomniałem powyżej, może znajdować się w innych miejscach:A jeśli
service
polecenie nie działa, zrób to: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
nmap
na 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.źródło
Naprawiłem to, zmieniając
bind-address 127.0.0.1
nabind-address 0.0.0.0
in/etc/mysql/mysql.conf.d
(aby MySQL nasłuchiwał na wszystkich portach).Ponadto skonfigurowałem konto użytkownika mysql, aby mogło być używane zdalnie (patrz https://stackoverflow.com/a/24171107/132374 ).
źródło
Używam tej metody:
Nie trzeba zmieniać innych plików konfiguracyjnych ani domyślnie otwierać żadnych dodatkowych portów.
źródło
sudo ufw allow 3306/tcp
Próbowałem edytować, ale nie pozwoliłemMoże się zdarzyć, że Twoja konfiguracja znajduje się w katalogu
/etc/mysql/mysql.conf.d/mysqld.cnf
, sprawdź, czy tak nie jest.źródło