¿Te estás conectando a "localhost" o "127.0.0.1"? Noté que cuando se conecta a "localhost" se usa el conector de socket, pero cuando se conecta a "127.0.0.1" se usa el conector TCP / IP. Puede intentar usar "127.0.0.1" si el conector del zócalo no está habilitado / funcionando.
En ese caso, probablemente debería verificar si su servidor MYSQL se está ejecutando realmente.
Jan Thomä
3
También puede forzar el uso de un socket con el parámetro de socket (-S con / usr / bin / mysql) y forzar TCP / IP proporcionando un puerto (-P con / usr / bin / mysql.)
Kaoru
Usar un nombre de red totalmente calificado que no sea localhost funcionó para mí. Solo asegúrese de que esté declarado en el archivo 'hosts' del lado del cliente.
Fabien Haddadi
2
Nota para los usuarios de cygwin: si el cliente mysql de cygwin intenta conectarse a un servidor mysql WAMP local, por ejemplo, use -h <nombre de host que no sea localhost>. No intente crear un archivo mysql.sock y declararlo en cualquier archivo my.cnf, no funcionará.
Fabien Haddadi
Un nombre de host incorrecto me dio exactamente el mismo error. Mirar el /etc/hostsarchivo en mi contenedor acoplable me mostró el nombre de host de MySql mysql. El uso de este mismo nombre de host en mi configuración de conexión resolvió el problema.
Stephane
188
Asegúrese de que su servicio mysql se esté ejecutando
Esta fue la respuesta para mí. Como estoy usando mariadb, la solución fue ejecutar lo siguiente: "sudo systemctl start mariadb". Todo estuvo bien después de eso.
mohsen
Dele una medalla a @Zahra
Ahmed C
28
Si su archivo my.cnf (generalmente en la carpeta etc.) está configurado correctamente con
socket=/var/lib/mysql/mysql.sock
puede verificar si mysql se está ejecutando con el siguiente comando:
mysqladmin -u root -p status
intente cambiar su permiso a la carpeta mysql. Si está trabajando localmente, puede intentar:
renombrar mysql.sock a otra cosa, luego reiniciar mysqld ("service mysqld restart"), luego renombrar otra cosa a mysql.sock funcionó para mí. Una ligera variación en esta respuesta, así que gracias.
Análisis difuso
Esta respuesta puede ayudar a localizar el mysql.sockarchivo
Nobita
15
Si está en un RHEL reciente, es posible que deba iniciar mariadb (un código abierto mysql db) en lugar de mysql db:
yum remove mysql
yum -y install mariadb-server mariadb
service mariadb start
Entonces deberías poder acceder a mysql de la manera habitual:
Para su información, esto también funciona para CentOS 8.1. Después de la instalación mariadb-servery mariadb, no olvide ejecutar mysql_secure_installationpara limpiar algunas configuraciones inseguras predeterminadas.
Dio Phung
13
En mi caso, he movido el archivo de socket a otra ubicación dentro /etc/my.cnf
de /var/lib/mysql/mysql.socka/tmp/mysql.sock
Incluso después de reiniciar el servicio mysqld, sigo viendo el mensaje de error cuando intento conectarme.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
El problema está en la forma en que se configura el cliente. La ejecución de los diagnósticos en realidad mostrará la ruta correcta del socket. p.ejps aux | grep mysqld
Trabajos:
mysql -uroot -p -h127.0.0.1
mysql -uroot -p --socket=/tmp/mysql.sock
No funciona:
mysql -uroot -p
mysql -uroot -p -hlocalhost
Puede solucionar este problema agregando la misma línea de socket en la [client]sección dentro de la configuración de mysql.
La única respuesta correcta. Me pregunto por qué no tiene suficientes votos.
CentAu
11
Compruebe si su servicio mysqld se está ejecutando o no, si no se ejecuta, inicie el servicio.
Si su problema no se resuelve, busque /etc/my.cnfy modifique de la siguiente manera, donde verá una línea que comienza con socket. Haga una copia de seguridad de ese archivo antes de hacer esta actualización.
Hola Sekar, ingresé "find / -name my.cnf" y obtuve dos ubicaciones. 1) /opt/lampp/etc/my.cnf 2) /etc/mysql/my.cnf. Entonces, cuál usar ... Hice una pregunta aquí ... stackoverflow.com/questions/32437796/…
Nana Partykar
7
MariaDB, una bifurcación de MySQL desarrollada por la comunidad, se ha convertido en la implementación predeterminada de MySQL en muchas distribuciones.
Entonces, primero debes comenzar,
$ sudo systemctl start mariadb
Si esto falla, intente,
$ sudo systemctl start mysqld
Luego, para comenzar mysql,
$ mysql -u root -p
A partir de hoy, en Fedora el paquete se llama mariadb
Y en Ubuntu se llama mariadb-server.
Por lo tanto, es posible que deba instalarlo si aún no está instalado en su sistema.
Asegúrate de tener suficiente espacio /var. Si Mysql demon no puede escribir información adicional en la unidad, el servidor mysql no se iniciará y provocará el errorCan't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
Gracias, estoy ejecutando mysql en oracle virtualbox y cuando hice un volcado de mi bd, me quedé sin espacio y no pude iniciar el servidor mysql, cuando eliminé el archivo de volcado pude reiniciar el servidor mysql.
JayCee
1
Esto lo resolvió para mí. Tenía innodb_buffer_pool_size establecido en un valor muy alto para entornos de producción e hizo que mysql se bloqueara en mi máquina virtual.
Benjamin Brizzi
1
Tenía este problema cuando se utiliza phabricator y la solución era cambiar innodb_buffer_pool_sizeen my.cnf. Establecerlo en un valor pequeño como innodb_buffer_pool_size = 50Mes una buena prueba para descartar esta hipótesis;)
Yercalamarino
Ese era el maldito problema, comprobé todo menos el espacio en disco. ¡Espacio liberado de / var, volvió!
Nadjib Mami
5
Esto es lo que funcionó para mí:
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
service mysqld restart
si cambia archivos en / var / lib / mysql [como copiar o reemplazar eso], debe establecer el propietario de los archivos en mysql, esto es tan importante si el reinicio de mariadb.service ha sido lento
¿Qué quieres decir? lea las preguntas frecuentes antes de hacer una pregunta aquí
Freak
Esta pregunta fue respondida con éxito hace tres años. Esta respuesta exacta se dio más completamente el año pasado.
Cairnarvon
2
Asegúrese de haber instalado el servidor MySQL correctamente, me encontré con este error muchas veces y creo que es complicado depurarlo desde el socket, es decir, podría ser más fácil reinstalarlo.
Si está utilizando CentOS 7, esta es la forma correcta de instalarlo:
En primer lugar, agregue la fuente de la comunidad mysql yum install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
Entonces puedes instalarlo yum install mysql-community-server
Tenga en cuenta que si bien mysql lee la información de la ubicación del archivo socket del archivo my.cnf, el programa mysql_secure_installation parece no hacerlo correctamente a veces.
Entonces, si eres como yo y barajas las cosas en el momento de la instalación, podrías meterte en la situación en la que puedes conectarte a la base de datos con mysql muy bien, pero la cosa no se puede asegurar (no usar ese script de todos modos).
Para solucionar esto, la sugerencia de sreddy funciona bien: haga un enlace suave desde donde el script esperaría el socket hasta donde realmente está. Ejemplo:
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
(Uso / tmp / como ubicación predeterminada para los sockets)
Una forma de reproducir este error: si pretendía conectarse a un servidor externo pero en lugar de conectarse al servidor local no existente:
eric@dev ~$ mysql -u dev -p
Enter password:
ERROR 2002(HY000): Can't connect to local MySQL server through
socket '/var/lib/mysql/mysql.sock'(2)
eric@dev ~$
Entonces debe especificar el host de esta manera:
eric@dev ~$ mysql --host=yourdb.yourserver.com -u dev -p
Enter password:
Welcome to the MySQL monitor. Commands endwith;or\g.
Your MySQL connection id is235
Server version:5.6.19 MySQL Community Server (GPL)
Type 'help;'or'\h'for help. Type '\c'to clear the current input statement.
mysql> show databases;+-------------------------+|Database|+-------------------------+| information_schema || mysql || performance_schema |+-------------------------+3rowsinset(0.00 sec)
mysql>exit
Bye
eric@dev ~$
Esta podría ser una sugerencia estúpida, pero asegúrese al 100% de que su base de datos todavía esté alojada en localhost. Por ejemplo, si un administrador de red eligió (o cambió a) el alojamiento de Amazon DB, ¡necesitará ese nombre de host!
Estoy usando el proveedor de alojamiento 1 y 1 y recibí este error después de enviar el mensaje al host. La solución fue simplemente proporcionar el nombre de host "mysql -u dbo70123521 -p --host db70313321.db.1and1.com db703133520"
robar el
1
En mi caso, estaba importando una nueva base de datos y no pude volver a conectarme después de eso. Finalmente me di cuenta de que era un problema espacial.
Para que pueda eliminar la última base de datos y expandir su disco duro o lo que hice, restauró una instantánea de mi máquina virtual.
se encontró con este problema al intentar conectar mysql en el cliente SSH, y fue útil agregar la ruta del socket al comando cuando es necesario cambiar entre sockets.
> mysql -u user-p --socket=/path/to/mysql5143.sock
Este es un problema si se está quedando sin espacio en disco. La solución es liberar algo de espacio del HDD.
Por favor, lea más para tener la explicación:
Si está ejecutando MySQL en LINUX, verifique el espacio libre de HDD con el comando disk free:
df
si obtienes algo así:
Filesystem 1K-blocks Used Available Use% Mounted on/dev/sda2 516282849022600100%/
udev 156676841565921%/dev
/dev/sda3 31071247084428784443%/home
¡Entonces este es el problema y ahora tienes la solución!
Como mysql.sock quiere crearse en la carpeta mysql, que casi siempre está debajo de la carpeta raíz, no se pudo lograr debido a la falta de espacio.
Si recibe periódicamente el comando ls en el directorio mysql (en openSUSE 11.1 está en / var / lib / mysql) obtendrá algo como:
hostname:/var/lib/mysql #.protected IT files ibdata1 mysqld.log systemtemp
.tmp NEWS greekDB mysql mysqld.pid test
ARXEIO TEMP1 ib_logfile0 mysql.sock polis
DATING deisi ib_logfile1 mysql_upgrade_info restore
El archivo mysql.sock aparece y desaparece con frecuencia (debe intentar asignar con el ls para golpear una instancia con el archivo mysql.sock en la carpeta).
Esto se debe a que no hay suficiente espacio en disco.
Espero poder ayudar a algunas personas !!!! ¡Gracias!
Respuestas:
¿Te estás conectando a "localhost" o "127.0.0.1"? Noté que cuando se conecta a "localhost" se usa el conector de socket, pero cuando se conecta a "127.0.0.1" se usa el conector TCP / IP. Puede intentar usar "127.0.0.1" si el conector del zócalo no está habilitado / funcionando.
fuente
/etc/hosts
archivo en mi contenedor acoplable me mostró el nombre de host de MySqlmysql
. El uso de este mismo nombre de host en mi configuración de conexión resolvió el problema.Asegúrese de que su servicio mysql se esté ejecutando
Luego, pruebe uno de los siguientes:
(si no ha configurado la contraseña para mysql)
si ya ha establecido la contraseña
fuente
service mariadb start
porque mariadb.org/debian-9-released-mariadb-mysql-variantSi su archivo my.cnf (generalmente en la carpeta etc.) está configurado correctamente con
puede verificar si mysql se está ejecutando con el siguiente comando:
intente cambiar su permiso a la carpeta mysql. Si está trabajando localmente, puede intentar:
eso me resolvió
fuente
El servidor MySQL no se está ejecutando, o esa no es la ubicación de su archivo de socket (consulte my.cnf).
fuente
Lo más probable
mysql.sock
es que no exista en/var/lib/mysql/
.Si encuentra el mismo archivo en otra ubicación, entonces enlace simbólico:
Por ejemplo: lo tengo en
/data/mysql_datadir/mysql.sock
Cambie el usuario a mysql y ejecútelo como se menciona a continuación:
Eso resolvió mi problema
fuente
mysql.sock
archivoSi está en un RHEL reciente, es posible que deba iniciar mariadb (un código abierto mysql db) en lugar de mysql db:
Entonces deberías poder acceder a mysql de la manera habitual:
fuente
mariadb-server
ymariadb
, no olvide ejecutarmysql_secure_installation
para limpiar algunas configuraciones inseguras predeterminadas.En mi caso, he movido el archivo de socket a otra ubicación dentro
/etc/my.cnf
de/var/lib/mysql/mysql.sock
a/tmp/mysql.sock
Incluso después de reiniciar el servicio mysqld, sigo viendo el mensaje de error cuando intento conectarme.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
El problema está en la forma en que se configura el cliente. La ejecución de los diagnósticos en realidad mostrará la ruta correcta del socket. p.ej
ps aux | grep mysqld
Trabajos:
No funciona:
Puede solucionar este problema agregando la misma línea de socket en la
[client]
sección dentro de la configuración de mysql.fuente
Simplemente edite
/etc/my.cnf
Agregar las siguientes líneas amy.cnf
Reinicie mysql y conéctese nuevamente
fuente
Compruebe si su servicio mysqld se está ejecutando o no, si no se ejecuta, inicie el servicio.
Si su problema no se resuelve, busque
/etc/my.cnf
y modifique de la siguiente manera, donde verá una línea que comienza consocket
. Haga una copia de seguridad de ese archivo antes de hacer esta actualización.Cambiar a
fuente
MariaDB, una bifurcación de MySQL desarrollada por la comunidad, se ha convertido en la implementación predeterminada de MySQL en muchas distribuciones.
Entonces, primero debes comenzar,
Si esto falla, intente,
Luego, para comenzar mysql,
A partir de hoy, en Fedora el paquete se llama
mariadb
Y en Ubuntu se llamamariadb-server
.Por lo tanto, es posible que deba instalarlo si aún no está instalado en su sistema.
fuente
Asegúrate de tener suficiente espacio
/var
. Si Mysql demon no puede escribir información adicional en la unidad, el servidor mysql no se iniciará y provocará el errorCan't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
Considere usar
Esto lo ayudará a mantener bajo el uso del disco.
fuente
innodb_buffer_pool_size
enmy.cnf
. Establecerlo en un valor pequeño comoinnodb_buffer_pool_size = 50M
es una buena prueba para descartar esta hipótesis;)Esto es lo que funcionó para mí:
fuente
Compruebe si se está ejecutando otro servicio mysql.
fuente
Asegúrese de haber iniciado el servidor:
Luego, conéctese con el usuario root:
fuente
Si su mysql funcionaba anteriormente y se ha detenido de repente, simplemente "reinicie" el servidor.
Estaba enfrentando este problema en mi CentOS VPS .->
Estaba constantemente recibiendo
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'(2)
Intenté todas las técnicas, finalmente reiniciar el servidor solucionó los problemas ->
shutdown -r now
Espero que esto ayude !!
fuente
tratar
fuente
si cambia archivos en / var / lib / mysql [como copiar o reemplazar eso], debe establecer el propietario de los archivos en mysql, esto es tan importante si el reinicio de mariadb.service ha sido lento
fuente
Primero ingrese "service mysqld start" e inicie sesión
fuente
Asegúrese de haber instalado el servidor MySQL correctamente, me encontré con este error muchas veces y creo que es complicado depurarlo desde el socket, es decir, podría ser más fácil reinstalarlo.
Si está utilizando CentOS 7, esta es la forma correcta de instalarlo:
En primer lugar, agregue la fuente de la comunidad mysql
yum install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
Entonces puedes instalarlo
yum install mysql-community-server
Comience con systemctl:
systemctl start mysqld
fuente
Mi problema fue que instalé mysql con éxito y funcionó bien.
Pero un día, ocurrió el mismo error.
No se puede conectar al servidor MySQL local a través del socket '/var/lib/mysql/mysql.sock' (2)
Y no existía ningún archivo mysql.sock.
Esta solución resolvió mi problema y mysql estaba funcionando nuevamente:
Inicie sesión como root:
Correr:
Prueba como root:
MySQL ahora debería estar en funcionamiento.
Espero que esto también pueda ayudar a alguien más.
fuente
Tenga en cuenta que si bien mysql lee la información de la ubicación del archivo socket del archivo my.cnf, el programa mysql_secure_installation parece no hacerlo correctamente a veces.
Entonces, si eres como yo y barajas las cosas en el momento de la instalación, podrías meterte en la situación en la que puedes conectarte a la base de datos con mysql muy bien, pero la cosa no se puede asegurar (no usar ese script de todos modos).
Para solucionar esto, la sugerencia de sreddy funciona bien: haga un enlace suave desde donde el script esperaría el socket hasta donde realmente está. Ejemplo:
(Uso / tmp / como ubicación predeterminada para los sockets)
fuente
Me funcionó con los siguientes cambios
Cualquier ruta para el socket se menciona en [mysqld] y la misma en [client] en my.cnf y reinicie mysql
[mysqld] socket = / var / lib / mysql / mysql.sock
[cliente] socket = / var / lib / mysql / mysql.sock
fuente
Una forma de reproducir este error: si pretendía conectarse a un servidor externo pero en lugar de conectarse al servidor local no existente:
Entonces debe especificar el host de esta manera:
fuente
Esta podría ser una sugerencia estúpida, pero asegúrese al 100% de que su base de datos todavía esté alojada en localhost. Por ejemplo, si un administrador de red eligió (o cambió a) el alojamiento de Amazon DB, ¡necesitará ese nombre de host!
fuente
En mi caso, estaba importando una nueva base de datos y no pude volver a conectarme después de eso. Finalmente me di cuenta de que era un problema espacial.
Para que pueda eliminar la última base de datos y expandir su disco duro o lo que hice, restauró una instantánea de mi máquina virtual.
Por si alguien piensa que es útil
fuente
se encontró con este problema al intentar conectar mysql en el cliente SSH, y fue útil agregar la ruta del socket al comando cuando es necesario cambiar entre sockets.
fuente
Este es un problema si se está quedando sin espacio en disco. La solución es liberar algo de espacio del HDD.
Por favor, lea más para tener la explicación:
Si está ejecutando MySQL en LINUX, verifique el espacio libre de HDD con el comando disk free:
si obtienes algo así:
¡Entonces este es el problema y ahora tienes la solución!
Como mysql.sock quiere crearse en la carpeta mysql, que casi siempre está debajo de la carpeta raíz, no se pudo lograr debido a la falta de espacio.
Si recibe periódicamente el comando ls en el directorio mysql (en openSUSE 11.1 está en / var / lib / mysql) obtendrá algo como:
El archivo mysql.sock aparece y desaparece con frecuencia (debe intentar asignar con el ls para golpear una instancia con el archivo mysql.sock en la carpeta).
Esto se debe a que no hay suficiente espacio en disco.
Espero poder ayudar a algunas personas !!!! ¡Gracias!
fuente
Tuve que desactivar
explicit_defaults_for_timestamp
desde my.cnf.fuente
Pruebe las primeras 2, 3 soluciones. El error es stil popup & Si no puede encontrar
/var/lib/mysql/mysql.sock
Verifique el espacio disponible en / var /
Si el directorio está lleno, elimine algunos archivos / directorios no utilizados
Probablemente su problema se resolverá ahora.
fuente
Si está en el shell de sf.net , intente:
Cambie {LETTER} y {GROUP ID} como se muestra en su base de datos MySQL del perfil de administrador del proyecto.
fuente