Aby połączyć się ze zdalnym serwerem MySQL, czy to bezpośrednio, czy przez tunel SSH, nie możesz użyć unix_socket
wtyczka uwierzytelniająca, która wymaga lokalnego dostępu do pliku gniazda unix w systemie operacyjnym DB Server.
unix_socket
plugin jest zaimplementowany za pomocą specjalnego typu pliku (gniazdo unix), który jest formą komunikacji międzyprocesowej (IPC) w systemach *nix. Pozwala klientowi mysql CLI komunikować się z bazą danych i wymaga lokalnego dostępu do pliku gniazda (np.:/tmp/mysql.sock
). Kiedy łączysz się z gniazdem, unix_socket
wtyczka (po stronie serwera) uzyska identyfikator użytkownika podłączonego do gniazda (tj. Twój użytkownik) i automatycznie uwierzytelni Cię bez konieczności podawania hasła.
Możliwe rozwiązania:
Jeśli łączysz się z komputerem B za pomocą użytkownika innego niż root, musisz utworzyć użytkownika bazy danych o tej samej nazwie, co nazwa konta użytkownika innego niż root systemu operacyjnego.
GRANT ALL PRIVILEGES ON *.* TO 'youruser'@'localhost' IDENTIFIED VIA unix_socket;
Teraz możesz połączyć się z mysql za pomocą swojego konta użytkownika i klienta mysql CLI, po prostu uruchamiając:
youruser:~$ mysql
Jeśli chcesz połączyć się z bazą danych z użytkownikiem root, potrzebujesz dostępu do konta root lub zasad sudo powiązanych z twoim użytkownikiem, aby uruchomić klienta mysql.
youruser:~$ sudo mysql
Możesz oczywiście włączyć regularny, uwierzytelniony dostęp sieciowy do swojego konta root bazy danych. Może to prowadzić do problemów z bezpieczeństwem, więc lepiej ograniczyć je do hosta lokalnego:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY 'xxx' WITH GRANT OPTION;
Teraz możesz zalogować się z dowolnego lokalnego konta systemu operacyjnego, jeśli możesz uwierzytelnić swój login:
youruser:~$ mysql -u root -p