Połączenie MySQL przez tunel SSH - jak określić inny serwer MySQL?
Mam ~50 baz danych ustawionych pod różnymi nazwami hostów, z wymogiem połączenia się z nimi przez tunel SSH.
Na przykład:
Host SSH w
ssh.example.com
Host MySQL w
mysql1.example.com
Udało mi się utworzyć tunel za pomocą autossh( serwer WWW z Debianem), ale nie mogę dowiedzieć się, jak połączyć się z konkretną nazwą hosta MySQL "poza" tunelem SSH.
Wpisanie lsof -i -n | egrep '\<ssh\>'
potwierdza, że tunel jest działa (wysyła port 3307 do ssh.example.com port 3306)
Więc kiedy próbuję mysql -h 127.0.0.1 -P 3307
dostaję odmowę połączenia. Nie jest to zbyt dziwne, ponieważ nie jest to serwer MySQL.
Jak określić host mysql1.example.com
Po utworzeniu tunelu SSH? Próbowałem szukać wszędzie, ale nie mogę tego rozgryźć.
4 answers
Rozwiązałem to! Chodzi o to, aby połączyć się z odpowiednim serwerem podczas tworzenia samego tunelu-powinienem był to przewidzieć.
ssh -f [email protected] -L 3307:mysql1.example.com:3306 -N
Następnie mysql -h 127.0.0.1 -P 3307
działał zgodnie z przeznaczeniem. :)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-22 07:18:20
Mam fajny blog o tym jak połączyć się z MySQL za pomocą SSH tunnel. Jest to bardzo dobrze wyjaśnione tutaj .
Polecenie łączenia się z tunelem SSH:
ssh -L [listening port]:[REMOTE_MYSQL_HOST]:[REMOTE_MYSQL_PORT] [SSH_USER]@[SSH_HOST]
Polecenie łączenia się z MySQL:
localhost:[listening port]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-16 17:39:44
Gdy nie masz bezpośredniego dostępu do mysql-server
, używasz jump-server
.
Z twojego komputera łączysz się (ssh) z serwerem jump i stamtąd łączysz się ze swoim mysql-server
.
Można tego uniknąć za pomocą ssh- tunneling
.
Przypuśćmy, że Twoje
jump server is `jump-ip`
mysql server is `mysql-ip`
your machine is `machine-ip`
Wystarczy otworzyć klienta ssh (Putty w windows lub terminal w linux/ios).
Typ:
ssh -L [local-port]:[mysql-ip]:[mysql-port] [jump-server-user]@[jump-ip]
Następnie możesz użyć swoich localhost
i local-port
, aby uzyskać bezpośredni dostęp do serwera mysql na zdalnej maszynie.
Np. Twój adres URL Jdbc do dostęp do bazy danych mysql, w takim przypadku będzie
jdbc:mysql://localhost:[local-port]/[database-name]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-07 12:02:10
Utworzyłem Tunnel do DB używając tego polecenia
ssh -L 10000:localhost:3306 user@<ip addess to connect DB> -N -f
- L jest lokalnym portem hosta jest zdefiniowany przez użytkownika u może podać dowolny numer portu
Od 0 do 65535. 0 do 1023 są zarezerwowane.Czy używasz uwierzytelniania opartego na kluczach na serwerze, powinieneś
Wspomnij o kluczu w ten sposób.
ssh -i <path of the private key> -L 10000:localhost:3306 user@<ip addess to connect DB> -N -f
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-19 09:38:22