Per connetterti a un server MySQL remoto, direttamente o tramite un tunnel SSH, non puoi usare il unix_socket
plugin di autenticazione che richiede l'accesso locale al file socket unix sul sistema operativo DB Server.
Il unix_socket
plugin viene implementato utilizzando un tipo speciale di file (unix socket) che è una forma di comunicazione interprocesso (IPC) nei sistemi *nix. Consente al client della CLI mysql di parlare con il DB e richiede l'accesso locale al file socket (ad esempio:/tmp/mysql.sock
). Quando ti connetti al socket, il unix_socket
plugin (lato server) otterrà l'uid dell'utente connesso al socket (es:youruser) e ti autenticherà automaticamente senza bisogno di una password.
Possibili soluzioni:
Se ti connetti alla Macchina B con un utente non root, devi creare un utente DB con lo stesso nome del tuo account utente del sistema operativo non root.
GRANT ALL PRIVILEGES ON *.* TO 'youruser'@'localhost' IDENTIFIED VIA unix_socket;
Ora puoi connetterti a mysql usando il tuo account utente e il client CLI mysql semplicemente eseguendo:
youruser:~$ mysql
Se desideri connetterti al DB con l'utente root, devi accedere all'account root o a una policy sudo associata al tuo utente per eseguire il client mysql.
youruser:~$ sudo mysql
Ovviamente puoi abilitare l'accesso di rete autenticato regolare al tuo account root DB. Questo può portare a problemi di sicurezza, quindi è meglio limitarlo a localhost:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY 'xxx' WITH GRANT OPTION;
Ora puoi accedere da qualsiasi account del sistema operativo locale se puoi autenticare il tuo accesso:
youruser:~$ mysql -u root -p