Spraw, aby MySQL używał przekazywanego portu TCP
Unikaj wybierania lokalnego gniazda Unix, gdy klient MySQL ma się łączyć przez przekierowanie SSH TCP.
Przekierowanie SSH nasłuchuje na lokalnym porcie 13306, ale mysql nadal łączy się z lokalną bazą danych—albo zgłasza, że brakuje jego lokalnego gniazda. W systemie Unix klient MySQL, któremu podano localhost, może wybrać gniazdo Unix zamiast TCP. Podanie portu niekoniecznie zmienia ten wybór.
W przypadku istniejącego zatwierdzonego przekierowania TCP ustaw protokół jawnie:
mysql --protocol=TCP --host=127.0.0.1 --port=13306 \
--user=dbuser --password
Nazwa użytkownika jest przykładowa; opcja hasła prosi o interaktywne wprowadzenie. Polecenie łączy się z lokalnym odbiornikiem TCP zamiast gniazda Unix.
Trzymaj oba logowania osobno
Stała trasa SSH może mieć taki kształt:
ssh -N -L 127.0.0.1:13306:db.internal:3306 [email protected]
Serwer SSH bramy dociera do db.internal:3306. Następnie MySQL uwierzytelnia konto bazy danych przez ten strumień bajtów. Zaakceptowany klucz SSH nie daje logowania do bazy danych, a ograniczenia źródła bazy danych widzą połączenie przychodzące z tej strony trasy.
To stały adapter TCP, a nie ustawienie SOCKS używane przez mysql. Aplikacja nie potrzebuje negocjacji SOCKS, ponieważ punkt końcowy przekierowania ma jeden z góry określony cel.
Zachowaj zamierzoną tożsamość TLS bazy danych i politykę certyfikatów tam, gdzie są używane. Podłączenie gniazda do loopback nie sprawia, że certyfikat bazy danych jest ważny dla innej nazwy usługi. Udane lokalne połączenie TCP rozstrzyga wybór transportu, a nie późniejsze uwierzytelnianie bazy danych ani kontrole TLS.