Mysql
 sql >> Database >  >> RDS >> Mysql

Accedi all'account MySQL con unix_socket

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