solucion - No se puede conectar al servidor MySQL local a través del socket ''/var/mysql/mysql.sock''(38)
can t connect to local mysql server through socket ''/ var run mysqld mysqld sock (30)
Estoy teniendo un gran problema al intentar conectarme a mysql. Cuando corro
/usr/local/mysql/bin/mysql start
Tengo el siguiente error:
Can''t connect to local MySQL server through socket ''/var/mysql/mysql.sock'' (38)
Tengo mysql.sock
en el directorio /var/mysql
.
En /etc/my.cnf
tengo:
[client]
port=3306
socket=/var/mysql/mysql.sock
[mysqld]
port=3306
socket=/var/mysql/mysql.sock
key_buffer_size=16M
max_allowed_packet=8M
y en /etc/php.ini
tengo:
; Default socket name for local MySQL connects. If empty, uses the built-in
; MySQL defaults.
mysql.default_socket = /var/mysql/mysql.sock
He reiniciado Apache usando sudo /opt/local/apache2/bin/apachectl restart
Pero todavía tengo el error.
De lo contrario, no sé si eso es relevante, pero cuando hago mysql_config --sockets
obtengo
--socket [/tmp/mysql.sock]
¿está seguro de que instaló mysql y también el servidor mysql?
Por ejemplo, para instalar el servidor mySql usaré yum o apt para instalar tanto la herramienta de línea de comandos mysql como el servidor:
yum -y install mysql mysql-server (or apt-get install mysql mysql-server)
Habilitar el servicio MySQL:
/sbin/chkconfig mysqld on
Iniciar el servidor MySQL:
/sbin/service mysqld start
después establezca la contraseña de root de MySQL:
mysqladmin -u root password ''new-password'' (with the quotes)
Espero que ayude.
Añadiendo
--protocol=tcp
La lista de empleados en su conexión funcionó para mí.
Acabo de tener este problema. después de un día de verificar finalmente tengo la respuesta con eso. El archivo mysql.sock se crea cuando MariaDB se inicia y se elimina cuando MariaDB se apaga. No existirá si MariaDB no se está ejecutando. Tal vez usted no instaló MariaDB. PODRÍA SEGUIR LA INSTRUCCIÓN A CONTINUACIÓN: https://www.linode.com/docs/databases/mariadb/how-to-install-mariadb-on-centos-7 BEST
Asegúrese de que está ejecutando mysqld: /etc/init.d/mysql start
CentOS 7, 64 bit. Instalación nueva.
En mi caso, el error se debió a que no tenía el servidor MySQL y el cliente MySQL correctos instalados.
Usando yum
, mariadb
y mysql-community edition. Descargué las rpm para el cliente y el servidor desde el sitio web oficial de MySQL e instalé el servidor y el cliente.
Al instalar el servidor, se me mostró un mensaje de que la contraseña de la cuenta raíz de MySQL estaba almacenada en un archivo que podía ver con sudo cat /root/.mysql_secret
.
Entonces, después de instalar el cliente y el servidor, verifiqué si MySQL estaba funcionando (creo que reinicié antes de hacerlo) con el comando sudo service mysql status
y obtuve el resultado.
MySQL en ejecución (2601) [OK]
Ingresé a MySQL usando la contraseña del archivo .mysql_secret:
mysql -uroot -pdxM01Xfg3DXEPabpf
. Tenga en cuenta que dxM01Xfg3DXEPabpf
es la contraseña mencionada en el archivo .mysql_secret.
y luego escribió ingresó el siguiente comando en el indicador de mysql para cambiar la contraseña de root:
mysql> SET PASSWORD FOR ''root''@''localhost'' = PASSWORD(''somePassword'');
Todo funcionó bien a partir de entonces.
Como pueden ver las muchas respuestas aquí, hay muchos problemas que pueden generar este mensaje de error al iniciar el servicio MySQL. La cuestión es que, por lo general, MySQL le dirá exactamente lo que está mal si solo busca en el archivo de registro apropiado.
Por ejemplo, en Ubuntu, debe verificar /var/log/syslog
. Debido a que muchas otras cosas también pueden estar registrando en este archivo, es probable que desee utilizar grep
para ver los mensajes de mysql, y la tail
para ver solo los más recientes. Todos juntos, eso podría parecer:
grep mysql /var/log/syslog | tail -50
No haga cambios a ciegas en su configuración porque alguien más dijo ''Esto funcionó para mi sistema''. Descubra qué es lo que realmente está mal con su sistema y obtendrá un mejor resultado mucho más rápido.
En mi caso, estaba usando Centos 5.5. Encontré que el problema era porque el servicio mysql se detuvo de alguna manera. Entonces comencé el servicio mysql con el comando:
/etc/init.d/mysqld start
Así que ... error tonto.
Esto fue lo suficientemente bueno para mí
sudo /etc/init.d/mysql restart
Hay muchas soluciones para este problema, pero para mi situación, solo necesitaba corregir la FECHA en la máquina / servidor (Servidor Ubuntu 16.04 ).
i) Verifique la fecha de su servidor y corríjala.
ii) Ejecute sudo /etc/init.d/mysql restart
Eso debería empezar.
Me encontré con este problema hoy. Ninguna de estas respuestas proporcionó la solución. Necesitaba hacer los siguientes comandos (que se encuentran aquí https://.com/a/20141146/633107 ) para que comience mi servicio mysql:
sudo /etc/init.d/mysql stop
cd /var/lib/mysql/
ls ib_logfile*
mv ib_logfile0 ib_logfile0.bak
mv ib_logfile1 ib_logfile1.bak
... etc ...
/etc/init.d/mysql restart
Esto fue parcialmente indicado por los siguientes errores en /var/log/mysql/error.log:
140319 11:58:21 InnoDB: Completed initialization of buffer pool
InnoDB: Error: log file ./ib_logfile0 is of different size 0 50331648 bytes
InnoDB: than specified in the .cnf file 0 5242880 bytes!
140319 11:58:21 [ERROR] Plugin ''InnoDB'' init function returned error.
140319 11:58:21 [ERROR] Plugin ''InnoDB'' registration as a STORAGE ENGINE failed.
140319 11:58:21 [ERROR] Unknown/unsupported storage engine: InnoDB
140319 11:58:21 [ERROR] Aborting
También vi el error de disco completo, pero solo cuando se ejecutan comandos sin sudo. Si la verificación de permisos falla, informa que el disco está lleno (incluso cuando la partición no está casi llena).
Otra solución es editar /etc/my.cnf e incluir el host en la sección [cliente]
[client]
#password = your_password
host = 127.0.0.1
port = 3306
socket = /var/run/mysql/mysql.sock
Y luego reiniciando el servicio mysql.
Esta solución se probó en: Versión del servidor: 5.5.25a-log Distribución de fuentes
Para aquellos cuya solución no funcionó, intente:
cd /etc/mysql
comprueba si my.cnf está presente
nano my.cnf
y asegúrese de tener una única dirección de enlace de la siguiente manera:
bind-address = 127.0.0.1
Si no, ese podría ser el problema, simplemente salga de nano y guarde el archivo.
y service mysql start
tenga en cuenta que si no tiene nano (es un editor de texto) solo instálelo con apt-get install nano
y una vez que presione Ctrl + X para salir, no olvide decir S para guardar y usar el mismo archivo)
Para evitar que se produzca el problema, debe realizar un cierre correcto del servidor desde la línea de comandos en lugar de apagar el servidor.
shutdown -h now
Esto detendrá los servicios en ejecución antes de apagar la máquina.
Basado en Centos, un método adicional para recuperarlo nuevamente cuando se encuentre con este problema es mover mysql.sock:
mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak
service mysqld start
Al reiniciar el servicio se crea una nueva entrada llamada mqsql.sock
Para mí, este fue simplemente un caso de MySQL que tardó mucho tiempo en cargarse. Tengo más de 100.000 tablas en una de mis bases de datos y finalmente se inició, pero obviamente tiene que tomar mucho tiempo en este caso.
Recibí el error porque estaba ejecutando MAMP y mi archivo .sock estaba en una ubicación diferente. Acabo de agregar un enlace simbólico en el que la aplicación pensó que debería ser lo que indicaba dónde estaba realmente y funcionó a la perfección.
Recibí este error cuando configuro el trabajo cron para mi archivo. Cambié los permisos del archivo a 777 pero todavía no funcionó para mí. Finalmente conseguí la solución. Puede ser que sea útil para otros.
Intenta con este comando:
mysql -h 127.0.0.1 -P 3306 -u raíz -p
Recuerda que -h significa host y -p significa puerto .
Si está utilizando la versión Micro de AWS (Amazon Web Services), entonces es un problema de memoria. Cuando corri
mysql
desde la terminal diría
ERROR 2002 (HY000): Can''t connect to local MySQL server through socket /var/run/mysqld/mysqld.sock'' (111)
Así que intenté lo siguiente y simplemente fallaría.
service mysqld restart
Después de mucho buscar, descubrí que tienes que crear un archivo de intercambio para que MySQL tenga suficiente memoria. Las instrucciones están listadas: http://www.prowebdev.us/2012/05/amazon-ec2-linux-micro-swap-space.html .
Entonces, pude reiniciar mysqld.
Si su archivo my.cnf (generalmente en la carpeta / etc / mysql / ) está configurado correctamente con
socket=/var/lib/mysql/mysql.sock
puedes 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ás trabajando localmente, puedes probar:
sudo chmod -R 755 /var/lib/mysql/
eso me lo resolvió
Si todo funcionó bien y recién comenzaste a ver este error, antes de hacer otra cosa, asegúrate de no estar sin espacio en el disco:
df -h
Si el volumen en el que se está creando mysql.sock se está utilizando al 100%, MySql no podrá crearlo y esta será la causa de este error. Todo lo que necesita hacer es eliminar algo que no es necesario, como los archivos de registro antiguos.
También encontré que esto era un problema de permisos. Comparé los archivos MySQL con una instalación en funcionamiento (tanto en Debian 6 squeeze) y tuve que hacer los siguientes cambios de propiedad (donde mydatabase
es cualquier base de datos que tenga).
Propiedad mysql:mysql
:
chown mysql:mysql /var/lib/mysql
chown mysql:mysql /var/lib/mysql/ib*
chown mysql:mysql /var/lib/mysql/mydatabase
chown mysql:mysql /var/lib/mysql/mydatabase/*
chown mysql:mysql /var/lib/mysql/mysql/*
Propiedad mysql:root
:
chown mysql:root /var/lib/mysql/mysql
chown mysql:root /var/run/mysqld
Propiedad mysql:adm
:
chown mysql:adm /var/log/mysql
chown mysql:adm /var/log/mysql.err
chown mysql:adm /var/log/mysql.log*
También tuve este problema al intentar iniciar el servidor, por lo que muchas de las respuestas aquí que simplemente dicen que iniciar el servidor no funcionaron. Lo primero que puede hacer es ejecutar lo siguiente para ver si hay errores de configuración:
/usr/sbin/mysqld --verbose --help 1>/dev/null
Tuve un error que apareció:
160816 19:24:33 [Note] /usr/sbin/mysqld (mysqld 5.5.50-0ubuntu0.14.04.1-log) starting as process 9461 ...
160816 19:24:33 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.
160816 19:24:33 [Note] Plugin ''FEDERATED'' is disabled.
160816 19:24:33 [ERROR] /usr/sbin/mysqld: unknown variable ''innodb-online-alter-log-max-size=4294967296''
160816 19:24:33 [ERROR] Aborting
Un simple grep -HR "innodb-online-alter-log-max-size" /etc/mysql/
me mostró exactamente qué archivo contenía la línea ofensiva, así que eliminé esa línea del archivo.
Luego, revisando mi archivo /var/log/mysql/error.log
que tenía:
InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 671088640 bytes!
160816 22:46:46 [ERROR] Plugin ''InnoDB'' init function returned error.
160816 22:46:46 [ERROR] Plugin ''InnoDB'' registration as a STORAGE ENGINE failed.
160816 22:46:46 [ERROR] Unknown/unsupported storage engine: InnoDB
160816 22:46:46 [ERROR] Aborting
Basándome en esta pregunta, la solución aceptada no funcionaría porque ni siquiera podía iniciar el servidor, así que seguí lo que decían algunos de los comentarios y eliminé mi /var/lib/mysql/ib_logfile0
y /var/lib/mysql/ib_logfile1
Archivos /var/lib/mysql/ib_logfile1
.
Esto permitió que el servidor se iniciara y pude conectar y ejecutar consultas, sin embargo, al revisar mi archivo de registro de errores, se estaba llenando rápidamente con varias decenas de miles de líneas como esta:
160816 22:52:15 InnoDB: Error: page 1415 log sequence number 82039318708
InnoDB: is in the future! Current system log sequence number 81640793100.
InnoDB: Your database may be corrupt or you may have copied the InnoDB
InnoDB: tablespace but not the InnoDB log files. See
InnoDB: http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html
InnoDB: for more information.
Basándome en una sugerencia de here , para solucionar este problema, realicé un mysqldump y restauré todas las bases de datos (consulte el enlace para ver otras soluciones).
$ mysqldump -u root -p --allow-keywords --add-drop-database --comments --hex-blob --opt --quote-names --databases db_1 db_2 db_3 db_etc > backup-all-databases.sql
$ mysql -u root -p < backup-all-databases.sql
Todo parece estar funcionando como se espera ahora.
Tuve el mismo problema y se debió a una actualización de los controladores mysql cuando se estaba ejecutando el servidor mysql. Lo arreglé simplemente reiniciando mysql y apache2:
servicio de sudo mysql parada
sudo service mysql start
sudo service apache2 stop
sudo service apache2 start
Tuve el siguiente error
ERROR 2002 (HY000): Can''t connect to local MySQL server through socket ''/var/run/mysqld/mysqld.sock'' (111)
Probé varias maneras y finalmente lo resolví de la siguiente manera.
sudo gksu gedit /etc/mysql/my.cnf
modificado
#bind-address = 127.0.0.1
a
bind-address = localhost
y reiniciado
sudo /etc/init.d/mysql restart
funcionó
Una solución rápida que funcionó para mí: intente usar la dirección IP local (127.0.0.1) en lugar de ''localhost'' en mysql_connect (). Esto "obliga" a php a conectarse a través de TCP / IP en lugar de un socket Unix.
Utilicé 127.0.0.1 para -h en lugar de localhost y todo estaba bien. En otro caso tenía lo que tenía - error que arriba.
prueba con -h (host) y -P (puerto):
mysql -h 127.0.0.1 -P 3306 -u root -p
siempre puede iniciar el servidor mysql especificando la ubicación del archivo mysql.sock utilizando la opción --socket
como
mysql --socket=/var/mysql/mysql.sock
Esto funcionará incluso si la ubicación del archivo de socket se especifica en una ubicación diferente en el archivo my.cnf.
Esto no responde directamente a su pregunta, sino a un subconjunto de la misma, a saber, usar PythonAnywhere. Seguí tropezando con esta pregunta cuando buscaba una solución, así que la estoy agregando aquí con la esperanza de que ayude a otros en mi situación.
PythonAnywhere decidió cambiar los nombres de host de conexión de base de datos para mejorar la eficiencia y confiabilidad, como se detalla aquí :
El nombre de host oficial que debe usar para conectarse a la instancia de la base de datos MySQL de su cuenta ha cambiado de mysql.server a su nombre de usuario .mysql.pythonanywhere-services.com . Esto evita una parte de nuestra infraestructura que ha comenzado a mostrar problemas en las últimas semanas, y debería ser mucho más eficiente y confiable que la forma anterior.
Por lo tanto, deberá actualizar su nombre de host al valor resaltado anteriormente.
sudo service mysql start
Esto debería servirte bien. Podría haber una posibilidad de que haya cambiado algunos comandos que afectaron las configuraciones de mysql.
sudo service mysqld start
Funcionó para mí, estoy usando Centos.