sql >> Databáze >  >> RDS >> Mysql

Vzdáleně se připojte k MySQL na virtuálním počítači Google Compute Engine

Právě jsem našel řešení svého problému,

Zvláštní poděkování @Slava za to, že mi ukázal cestu, koneckonců to byly iptables.

Při pokusu o vzdálené připojení se mi tedy stále zobrazovala zpráva „Připojení MySQL odmítnuto“, takže jsem hledal způsob, jak zobrazit protokoly připojení TCP a našel jsem tcpdump příkaz.

Spuštěním sudo tcpdump port 3306 -vvv -n Při každém pokusu o vzdálené připojení jsem viděl následující výstup:

Prohledal jsem manuálovou stránku tcpdump a viděl jsem, že R znamená příznak TCP RST (RESET).

Trochu jsem hledal a našel toto otázka a jeho přijatá odpověď mě znovu zavedla do IPTABLES, které @Slava navrhl od prvního komentáře.

Tehdy jsem se podíval pozorně a viděl jsem, že můj INPUT ACCEPT tcp:3306 byl definován po pravidle REJECT TCP cancel-with tcp-reset, a proto se zobrazil protokol.

Poté jsem právě odstranil pravidlo pro přijetí tcp:3306 a přidal jej před pravidla odmítnutí tcp a voila!

iptables -D INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
iptables -I INPUT {line number from the first reject tcp rule} -p tcp -m tcp --dport 3306 -j ACCEPT

IPTABLES nyní vypadá takto a konečně se mohu vzdáleně připojit k MySQL:

Chcete-li zobrazit seznam iptables s čísly řádků, zadejte:

sudo iptables -nL --line-numbers

Závěrečné myšlenky:

  • To lze zlepšit přidáním zdrojové IP adresy, ze které provádíte vzdálené připojení, z bezpečnostních důvodů na seznam povolených.


  1. zachovat vstupní formát textarea po použití mysql_real_escape_string k uložení

  2. node.js mysql pool beginTransakce a připojení

  3. Dotaz MySQL pomocí CASE pro VÝBĚR více sloupců

  4. Vaše heslo nesplňuje aktuální požadavky zásad