Saltar al contenido

Cómo solucionar errores de socket en MySQL

marzo 4, 2020

 

Esta guía está pensada para servir como un recurso de solución de problemas y punto de partida como a diagnosticar la configuración de MySQL. Vamos a repasar algunos de los problemas que muchos usuarios encuentran MySQL y proporcionan una guía para solucionar problemas específicos. También incluiremos enlaces a tutoriales digitalocean y la documentación oficial de MySQL, que puede ser útil en ciertos casos.

MySQL gestiona las conexiones con el servidor de base de datos mediante el uso de un archivo de socket , un tipo especial de archivo que facilita las comunicaciones entre los diferentes procesos. archivo de socket del servidor MySQL se llama mysqld.sock y en los sistemas de Ubuntu por lo general es almacenado en el directorio / var / run / mysqld / directorio. Este archivo se crea por el servicio MySQL automáticamente.

A veces, los cambios en el sistema o la configuración de MySQL puede resultar en MySQL no poder leer el archivo de socket, lo que impide el acceso a sus bases de datos. Las mayoría de las miradas de errores de conectores comunes como esto:

OutputERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

Hay algunas razones por las que puede producirse este error, y algunas de las formas posibles para resolverlo.

causa Uno común de este error es que el servicio MySQL se detiene o no ha empezado, para empezar, lo que significa que no ha podido crear el archivo de socket en el primer lugar. Para averiguar si esta es la razón por la que se está viendo este error, intente iniciar el servicio con systemctl:

sudo systemctl start mysql

  • sudo mysql inicio systemctl

A continuación, intente acceder a la línea de MySQL de nuevo. Si sigue recibiendo el error de socket, vuelva a comprobar la ubicación en la instalación de MySQL está buscando el archivo de socket. Esta información se puede encontrar en el archivo mysqld.cnf:

sudo nano /etc/mysql/mysql.conf.d/mysql.cnf

  • sudo nano /etc/mysql/mysql.conf.d/mysql.cnf

Busque el parámetro toma en la sección [mysqld] de este archivo. Se parece a esto:

. . .
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
. . .

Cerrar este archivo, a continuación, asegúrese de que el archivo existe mysqld.sock mediante la ejecución de un comando ls en el directorio en el que MySQL espera encontrar que: ls

ls -a /var/run/mysqld/

  • -a / var / run / mysqld /

si existe el archivo socket, lo verá en la salida de este comando:

Output. .. mysqld.pid mysqld.sock mysqld.sock.lock

Si no existe el archivo, la razón puede ser que MySQL está tratando de crearla, pero no tiene los permisos adecuados para hacerlo . Puede asegurarse de que los permisos correctos están en su lugar al cambiar la propiedad del directorio para el usuario MySQL y grupo:

sudo chown mysql:mysql /var/run/mysqld/

  • sudo chown mysql: mysql / var / run / mysqld /

A continuación, asegurar que el mysql usuario tiene los permisos apropiados sobre el directorio. Dejarlas en 775 funcionará en la mayoría de los casos:

sudo chmod -R 755 /var/run/mysqld/

  • sudo chmod -R 755 / var / run / mysqld /

Por último, reinicie el servicio de MySQL por lo que puede tratar de crear el archivo de socket nuevo:

sudo systemctl restart mysql

  • sudo systemctl reiniciar MySQL

A continuación, intente acceder a la línea de MySQL una vez más. Si sigue teniendo el error de socket, es probable que haya una cuestión más profunda con su instancia de MySQL, en cuyo caso se debe revisar el registro de errores para ver si puede proporcionar alguna pista.