Utilice unix_socket en mysql con un host que no sea localhost

Utilice unix_socket en mysql con un host que no sea localhost

Para replicar algún comportamiento de script en una caja de prueba, necesito autenticar mysql con root a través de un socket Unix.

Funciona bien con sudo mysql, pero cuando hago sudo mysql -h testhost obtengo:

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

He añadido testhost a mi archivo de hosts.

127.0.0.1 localhost testhost

También he actualizado las subvenciones de 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

Y

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

Respuesta1

Los "sockets Unix" no son sockets TCP/IP. Ellos sonsiemprelimitado únicamente al sistema actual: no es posible conectarse a la toma de otro sistema a través de la red.

Por eso, el nombre de host localhostes especial en MySQL y el cliente en realidad no intenta buscar su dirección IP.en absoluto. Y cuando te conectas a él, no te estás conectando a 127.0.0.1 ni a ::1; en realidad, te estás conectando a /var/run/mysqld/mysqld.sockuna ruta similar.

Si desea imitar una conexión de red, ejecute mysql -h 127.0.0.1o mysql -h ::1.

Conexiones de red (TCP/IP)no puedouse IDENTIFIED VIA unix_socket, porque no transfieren el UID del cliente (especialmente no de ninguna manera sensible a la seguridad). Deben utilizar contraseñas, certificados X.509 o GSSAPI.

información relacionada