Fórum Root.cz

Hlavní témata => Sítě => Téma založeno: tacoberu 24. 10. 2021, 01:30:48

Název: Nelze se připojit vzdáleně na MySQL server
Přispěvatel: tacoberu 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?
Název: Re:remote mysql server
Přispěvatel: _Jenda 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í)
Název: Re:remote mysql server
Přispěvatel: Filip Jirsák 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.
Název: Re:remote mysql server
Přispěvatel: tacoberu 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))
Název: Re:remote mysql server
Přispěvatel: neregistrovany 24. 10. 2021, 12:57:39
Zkuste:

nmap.exe ip-adresa-1 -p 3306

na stroji ze ktereho to zkousite
Název: Re:remote mysql server
Přispěvatel: tacoberu 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í  :-[
Název: Re:remote mysql server
Přispěvatel: Filip Jirsák 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í.
Název: Re:remote mysql server
Přispěvatel: neregistrovany 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
Název: Re:remote mysql server
Přispěvatel: tacoberu 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?
Název: Re:remote mysql server
Přispěvatel: tacoberu 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.
Název: Re:remote mysql server
Přispěvatel: Filip Jirsák 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.