Use unix_socket no mysql com host diferente de localhost

Use unix_socket no mysql com host diferente de localhost

Para replicar algum comportamento de script em uma caixa de teste, preciso autenticar o mysql com root via soquete unix.

Funciona bem com sudo mysql, mas quando faço sudo mysql -h testhost recebo:

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

Eu adicionei testhost ao meu arquivo hosts

127.0.0.1 localhost testhost

Eu também atualizei as concessões do mysql

    | GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED VIA unix_socket USING '*59D9CEFB549F231CFA8634AC47153FD4F3CCC29F' WITH GRANT OPTION |
| GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION

E

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED VIA unix_socket USING '*59D9CEFB549F231CFA8634AC47153FD4F3CCC29F'

Responder1

"Soquetes Unix" não são soquetes TCP/IP. Eles sãosemprelimitado apenas ao sistema atual – não é possível conectar-se ao soquete de outro sistema pela rede.

Por causa disso, o nome do host localhosté especial no MySQL e o cliente não tenta realmente procurar seu endereço IPde forma alguma. E quando você se conecta a ele, você não está se conectando a 127.0.0.1 nem ::1 – você está realmente se conectando a /var/run/mysqld/mysqld.sockalgum caminho semelhante.

Se você quiser imitar uma conexão de rede, execute mysql -h 127.0.0.1ou mysql -h ::1.

Conexões de rede (TCP/IP)não podeuse IDENTIFIED VIA unix_socket, porque eles não transferem o UID do cliente (especialmente de qualquer forma sensível à segurança). Eles devem usar senhas, certificados X.509 ou GSSAPI.

informação relacionada