Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Faça login na conta MySQL com unix_socket


Para se conectar a um servidor MySQL remoto, seja diretamente ou através de um túnel SSH, você não pode usar o unix_socket plugin de autenticação que requer acesso local ao arquivo de soquete unix no sistema operacional DB Server.

O unix_socket plugin é implementado usando um tipo especial de arquivo (soquete unix) que é uma forma de comunicação entre processos (IPC) em sistemas *nix. Ele permite que seu cliente mysql CLI converse com o banco de dados e requer acesso local ao arquivo de soquete (ou seja:/tmp/mysql.sock ). Quando você se conecta ao soquete, o unix_socket plugin (do lado do servidor) obterá o uid do usuário conectado ao soquete (ou seja:seuusuário) e o autenticará automaticamente sem a necessidade de uma senha.

Soluções possíveis:

Se você se conectar à Máquina B com um usuário não raiz, precisará criar um usuário de banco de dados com o mesmo nome de sua conta de usuário do sistema operacional não raiz.
GRANT ALL PRIVILEGES ON *.* TO 'youruser'@'localhost' IDENTIFIED VIA unix_socket;

Agora você pode se conectar ao mysql usando sua conta de usuário e o cliente mysql CLI simplesmente executando:
youruser:~$ mysql

Se você quiser se conectar ao banco de dados com o usuário root, precisará acessar a conta root ou uma política sudo associada ao seu usuário para executar o cliente mysql.
youruser:~$ sudo mysql

Obviamente, você pode habilitar o acesso de rede autenticado regular à sua conta raiz do banco de dados. Isso pode levar a problemas de segurança, por isso é melhor limitá-lo ao localhost:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY 'xxx' WITH GRANT OPTION;

Agora você pode fazer login de qualquer conta do sistema operacional local se puder autenticar seu login:
youruser:~$ mysql -u root -p