Nelze se připojit vzdáleně na MySQL server

Nelze se připojit vzdáleně na MySQL server
« kdy: 24. 10. 2021, 01:30:48 »
Ahoj.

Pokouším se přihlásit z příkazové řádky na server (Ubuntu 16.04) na MySQL.

Kód: [Vybrat]
mysql -h ip-adresa-1 3306 -u user -pheslo
To mi skončí na timeoutu:
Kód: [Vybrat]
ERROR 2002 (HY000): Can't connect to MySQL server on 'ip-adresa-1' (115)
Přes webové rozhraní (PMA) to jde. Uživatel má omezení na přístup 'user'@'%', což by tedy mělo být v pořádku.

Mám druhej server, kde mi to funguje, ale ten první se mi nedaří rozchodit.

Zkontrolovat jsem si firewall (ufw), zda mám povolenou IP. Zkusil jsem ho celej vypnout - nepomohlo. Když dám

Kód: [Vybrat]
telnet ip-adresa-1 80 # tak v pořádku
telnet ip-adresa-1 3306 # umře na timeout
telnet ip-adresa-2 3306 # v pořádku, to je ten druhej stroj, co mi funguje

Konfiguraci jsem porovnával (funkční a nefunkční) a jsou stejné.

Už mi dochází nápady. Poradíte prosím?
« Poslední změna: 24. 10. 2021, 16:30:13 od Petr Krčmář »


_Jenda

  • *****
  • 901
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:remote mysql server
« Odpověď #1 kdy: 24. 10. 2021, 06:44:07 »
Nahrát ve Wiresharku jak tam přistupuje PMA a jak tam přistupuje řádkové mysql. (jenom pro ujištění, skutečně se PMA připojuje z toho stejného stroje co spouštíš řádkového klienta? nebo je to PMA lokální, takže problém je ve skutečnosti v tom, že mysql třeba nenaslouchá ven? netstat -tlpn, tcpdump v okamžiku připojování)

Re:remote mysql server
« Odpověď #2 kdy: 24. 10. 2021, 11:45:46 »
Buď MySQL server na té IP adrese neposlouchá, nebo je komunikace blokovaná na firewallu. Takže obojí zkontrolovat. Naslouchání nejlépe příkazem ss -nltp a kontrolou, zda tam proces MySQL je a naslouchá na správné IP adrese. Firewall výpisem a kontrolou firewallových pravidel.

Re:remote mysql server
« Odpověď #3 kdy: 24. 10. 2021, 12:56:43 »
Nahrát ve Wiresharku jak tam přistupuje PMA a jak tam přistupuje řádkové mysql. (jenom pro ujištění, skutečně se PMA připojuje z toho stejného stroje co spouštíš řádkového klienta? nebo je to PMA lokální, takže problém je ve skutečnosti v tom, že mysql třeba nenaslouchá ven? netstat -tlpn, tcpdump v okamžiku připojování)

Pardon, to je nepochopení. PMA přistupuje na tom stroji, a přistupuje přes localhost. To jsem uváděl jen, že bych měl mít přistupovací údaje v pořádku. Já se k němu pokouším dostat zvenčí.

Buď MySQL server na té IP adrese neposlouchá, nebo je komunikace blokovaná na firewallu. Takže obojí zkontrolovat. Naslouchání nejlépe příkazem ss -nltp a kontrolou, zda tam proces MySQL je a naslouchá na správné IP adrese. Firewall výpisem a kontrolou firewallových pravidel.

Firewall (ufw) jsem kontroloval, to by mělo být v pořádku (navíc jsem ho zkoušel i vypínat, bez efektu).
Kód: [Vybrat]
3306                       ALLOW       moje.ip
MySQL je nakonfigurované stejně, jako ten druhý server. Vlastně je to do default z balíčku. Kde se to nastavuje?
ss -nltp - toto bohužel neznám, ale vrací to tento záznam, takže to je snad taky ok?
Kód: [Vybrat]
LISTEN     0      80          :::3306                    :::*                   users:(("mysqld",pid=13723,fd=31))

Re:remote mysql server
« Odpověď #4 kdy: 24. 10. 2021, 12:57:39 »
Zkuste:

nmap.exe ip-adresa-1 -p 3306

na stroji ze ktereho to zkousite


Re:remote mysql server
« Odpověď #5 kdy: 24. 10. 2021, 13:15:56 »
Zkuste:

nmap.exe ip-adresa-1 -p 3306

na stroji ze ktereho to zkousite
Skvělé. Mám první rozdíl:

nmap ip-adresa-1 -p 3306
Kód: [Vybrat]
PORT     STATE    SERVICE
3306/tcp filtered mysql

nmap ip-adresa-2 -p 3306
Kód: [Vybrat]
PORT     STATE SERVICE
3306/tcp open  mysql

Tušíš, co to může filtrovat? ufw to nebude, když je vypnutý, a dál moje znalosti bohužel nešahají  :-[

Re:remote mysql server
« Odpověď #6 kdy: 24. 10. 2021, 13:17:51 »
A firewall na stroji, odkud se připojujete, nebo někde v síti mezi klientem a serverem? IP adresu toho serveru zadáváte správně? Ve firewallu je povolena správná IP adresa klienta – není někde mezi třeba NAT?

Když pokus o připojení skončí timeoutem, a to i když zkoušíte telnet, znamená to, že je problém někde v síťové komunikaci.

Zkuste tcpdump na tom serveru, zda tam vůbec dorazí paket s klienta navazující spojení.

Re:remote mysql server
« Odpověď #7 kdy: 24. 10. 2021, 21:11:33 »
Zkuste:

nmap.exe ip-adresa-1 -p 3306

na stroji ze ktereho to zkousite
Skvělé. Mám první rozdíl:

nmap ip-adresa-1 -p 3306
Kód: [Vybrat]
PORT     STATE    SERVICE
3306/tcp filtered mysql

nmap ip-adresa-2 -p 3306
Kód: [Vybrat]
PORT     STATE SERVICE
3306/tcp open  mysql

Tušíš, co to může filtrovat? ufw to nebude, když je vypnutý, a dál moje znalosti bohužel nešahají  :-[

zkusil bych na stroji ip-adresa-1 udelat:

netstat.exe -anop tcp | findstr 3306

Re:remote mysql server
« Odpověď #8 kdy: 24. 10. 2021, 21:36:41 »
Zkuste:

nmap.exe ip-adresa-1 -p 3306

na stroji ze ktereho to zkousite
Skvělé. Mám první rozdíl:

nmap ip-adresa-1 -p 3306
Kód: [Vybrat]
PORT     STATE    SERVICE
3306/tcp filtered mysql

nmap ip-adresa-2 -p 3306
Kód: [Vybrat]
PORT     STATE SERVICE
3306/tcp open  mysql

Tušíš, co to může filtrovat? ufw to nebude, když je vypnutý, a dál moje znalosti bohužel nešahají  :-[

zkusil bych na stroji ip-adresa-1 udelat:

netstat.exe -anop tcp | findstr 3306

Kód: [Vybrat]
tcp6       0      0 :::3306                 :::*                    LISTEN      13723/mysqld     off (0.00/0/0)
tcp6       0      0 10.0.2.5:3306           ip-adresa-1:64560      ESTABLISHED 13723/mysqld     keepalive (546.14/0/0)

Co z toho mohu pochopit?

Re:remote mysql server
« Odpověď #9 kdy: 24. 10. 2021, 21:43:37 »

Každopádně - díky za pomoc, hodně to pomohlo. Nakonec jsem přesvědčil admina, aby se kouknul do Azure, a měl tam nějaké další filtrování, u kterého předpokládal trochu jiné chování, než jaké ve skutečnosti bylo.

Takže vyřešeno.
Ještě jednou díky.

Re:remote mysql server
« Odpověď #10 kdy: 24. 10. 2021, 21:50:08 »
zkusil bych na stroji ip-adresa-1 udelat:

netstat.exe -anop tcp | findstr 3306

Kód: [Vybrat]
tcp6       0      0 :::3306                 :::*                    LISTEN      13723/mysqld     off (0.00/0/0)
tcp6       0      0 10.0.2.5:3306           ip-adresa-1:64560      ESTABLISHED 13723/mysqld     keepalive (546.14/0/0)

Co z toho mohu pochopit?

Vážně vám na tom počítači fungují linuxové i Windowsovské příkazy? Nebo to byl linuxový příkaz netstat? netstat je na Linuxu zastaralý, byl dávno nahrazen příkazem ss. Takže výsledek je jenom zopakování výstupu z komentáře z 12:56, že MySQL naslouchá na všech dostupných IP adresách. Pak je tam ještě vidět, že je tam navázané spojení mezi 10.0.2.5:3306 a ip-adresa-1:64560, tj. váš MySQL server je připojen k MySQL serveru na adrese 10.0.2.5 – předpokládám nějaká replikace?

Pořád ale nevíme, jestli paket z vašeho klienta vůbec dorazí na server. Bez toho nepůjde zjistit, kde přesně je v síti problém – je potřeba najít to místo, kde se navazované spojení ztrácí. Takže nezbývá než použít tcpdump (na Windows Wireshark) a nechat si vypisovat všechny pakety na portu 3306. Začal bych na serveru – pokud paket dorazí až tam, je problém v místním firewallu na serveru. Pokud paket nedorazí, musíte pátrat mezi klientem a serverem a na klientovi.