Fórum Root.cz
Hlavní témata => Sítě => Téma založeno: 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.
mysql -h ip-adresa-1 3306 -u user -pheslo
To mi skončí na timeoutu:
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
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?
-
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í)
-
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.
-
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).
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?
LISTEN 0 80 :::3306 :::* users:(("mysqld",pid=13723,fd=31))
-
Zkuste:
nmap.exe ip-adresa-1 -p 3306
na stroji ze ktereho to zkousite
-
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
PORT STATE SERVICE
3306/tcp filtered mysql
nmap ip-adresa-2 -p 3306
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í :-[
-
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í.
-
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
PORT STATE SERVICE
3306/tcp filtered mysql
nmap ip-adresa-2 -p 3306
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
-
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
PORT STATE SERVICE
3306/tcp filtered mysql
nmap ip-adresa-2 -p 3306
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
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?
-
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.
-
zkusil bych na stroji ip-adresa-1 udelat:
netstat.exe -anop tcp | findstr 3306
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.