La declaración del socket debe ubicarse en [mysqld]
en tu my.cnf
. Si lo ha declarado allí y aún apunta a otro lugar como tmp
, entonces tu my.cnf
el archivo que ha estado editando no se lee cuando se inicia mysql o hay otro my.cnf
anulando el que ha estado editando. También puede darse el caso de que exista un segundo Socket
declaración en el mismo my.cnf
archivo que anula el que espera que mysql lea al inicio.
Puede comprobar su ruta absoluta iniciando sesión en mysql y ejecutando:
mysql> show variables like 'socket';
+-----------------------------------------+-------------------------------+
| Variable_name | Value |
+-----------------------------------------+-------------------------------+
| socket | /yourpath/mysql.sock |
+-----------------------------------------+-------------------------------+
1 rows in set (0.00 sec)
No hay un lugar correcto o incorrecto en Linux para guardar sockets, excepto en dispositivos externos que se desmontan en cualquier momento o carpetas que se vacían de vez en cuando. Debe configurar dónde desea colocarlo.
Para el cliente de la consola MySQL, hay algo más que considerar:el cliente parece usar el valor de configuración del socket proporcionado en [cliente] en lugar de [mysqld]. Si tiene una configuración de servidor MySQL múltiple como la mía (4.1, 5.5, 5.7), probablemente quiera usar una opción "--defaults-extra-file" con el socket escrito en la parte [cliente] para cada servidor diferente. El socket debe ser el mismo que el definido en la parte my.cnf [mysqld] utilizada en el servidor. Aquí hay un ejemplo defaults-extra-file.cnf, recuerde cambiar el usuario, la contraseña y el socket según sus necesidades:y manténgalo en los derechos de acceso 400 (después de todo, hay una contraseña almacenada):
[client]
user = guardian
password = I-4m.Gr00t!
host = localhost
socket = /var/run/mysqld/mysqld-5.6.sock
Sin embargo, esto solo se aplica si está utilizando "localhost" como el valor de "host". Si tiene varias direcciones locales (127.0.0.2, 127.0.0.3), debe dejar la variable de configuración para "host" en "localhost" para usar el socket configurado. De lo contrario, el cliente se conectará al servidor mediante TCP.
Esto fue probado en mi servidor Debian 9.5 con MySQL 4.1.22, 5.5.49 y 5.7.19 y sus respectivos clientes.