
Estamos ejecutando el servidor Ubuntu 13.10 en Vagrant y nos hemos encontrado con un problema interesante.
Estamos anulando la ubicación del socket en conf.d/my.cnf
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld_safe]
socket = /tmp/mysql.sock
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysql.pid
socket = /tmp/mysql.sock
port = 3306
datadir = /var/lib/mysql
bind-address = 0.0.0.0
Hasta ahora, todo bien. Al iniciar el servidor, de hecho hay un socket escuchando en /tmp.
Sin embargo, ¡solo el superusuario puede acceder a él!
Como no superusuario, mysql -u root -pXXXX recibe el siguiente error:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
El cliente intenta conectarse en el socket equivocado.
Supusimos que el problema era que nuestro usuario sin privilegios no puede acceder a los archivos conf para encontrar el socket correcto y, de hecho, cambiar los permisos en /etc/mysql a 0755 soluciona este problema, pero no parece la solución correcta.
Como nota al margen, en 12.04 este comportamiento es el mismo, pero está enmascarado por el hecho de que cuando se inicia mysql, crea el socket en /tmp, pero también crea un enlace simbólico en /var/run/mysqld, por lo que cuando el cliente intenta para conectarse, encuentra el enchufe predeterminado.
En ambas máquinas, mysql es la versión 5.5.37.
Respuesta1
Dependiendo de su configuración exacta, la siguiente puede ser suficiente para solucionar su problema de conexión.
puedes iniciar mysql con --socket=/tmp/mysql.sock
desde elmanual de mysql
--socket=path, -S path
Para conexiones a localhost, el archivo de socket Unix que se usará o, en Windows, el nombre de la canalización con nombre que se usará.
Para tener esa configuración almacenada sin permitir que el usuario lea toda la configuración de MySQL, puede cambiar la configuración del archivo ~/.my.cnf
verArchivos de opcionespara detalles
En su caso, agregaría socket=/tmp/mysql.sock a este archivo.
Respuesta2
Acabo de ver una instalación bastante nueva de Ubuntu 14.04 y los permisos predeterminados en /etc/mysql son 755. Para ser honesto, no entiendo por qué crees que eso es un problema.