sql >> Base de Datos >  >> RDS >> Mysql

Inicie sesión en la cuenta de MySQL con unix_socket

Para conectarse a un servidor MySQL remoto, ya sea directamente o a través de un túnel SSH, no puede usar el unix_socket complemento de autenticación que requiere acceso local al archivo de socket de Unix en el sistema operativo DB Server.

El unix_socket El complemento se implementa utilizando un tipo especial de archivo (unix socket) que es una forma de comunicación entre procesos (IPC) en sistemas * nix. Permite que su cliente mysql CLI hable con la base de datos y requiere acceso local al archivo de socket (es decir, /tmp/mysql.sock ). Cuando se conecta al socket, el unix_socket El complemento (del lado del servidor) obtendrá el uid del usuario conectado al socket (es decir, su usuario) y lo autenticará automáticamente sin necesidad de una contraseña.

Posibles soluciones:

Si se conecta a la Máquina B con un usuario no raíz, debe crear un usuario de base de datos con el mismo nombre que su nombre de cuenta de usuario del sistema operativo no raíz.

GRANT ALL PRIVILEGES ON *.* TO 'youruser'@'localhost' IDENTIFIED VIA unix_socket;

Ahora puede conectarse a mysql usando su cuenta de usuario y el cliente CLI de mysql simplemente ejecutando:

youruser:~$ mysql

Si desea conectarse a la base de datos con el usuario raíz, entonces necesita acceso a la cuenta raíz o una política sudo asociada a su usuario para ejecutar el cliente mysql.

youruser:~$ sudo mysql

Obviamente, puede habilitar el acceso de red autenticado regular a su cuenta raíz de base de datos. Esto puede generar problemas de seguridad, por lo que es mejor limitarlo a localhost:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY 'xxx' WITH GRANT OPTION;

Ahora puede iniciar sesión desde cualquier cuenta del sistema operativo local si puede autenticar su inicio de sesión:

youruser:~$ mysql -u root -p