No se puede encontrar mysql.sock

81

Solo tuve que volver a instalar mysql y tengo problemas para iniciarlo. No puede encontrar el socket (mysql.sock). El problema es que yo tampoco. En mi terminal Mac OS X 10.4, escribo:, locate mysql.socky vuelvo /private/tmp/mysql.sock. Tiene sentido que el archivo de socket exista en esa ubicación, pero en realidad no es así.

  1. ¿Cómo puedo encontrar el archivo de socket?

  2. Si location devuelve una ubicación falsa, debe tener algún tipo de memoria y probablemente índices. ¿Cómo puedo actualizar ese índice?

Tony
fuente
1
/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
Máxima Alekz

Respuestas:

139

para responder a la primera parte de su pregunta:

correr

% mysqladmin -p -u <user-name> variables

y verifique la variable 'socket'

behas
fuente
1
Cambiaría totalmente esta respuesta a la correcta si pudiera. ¡Si tan solo hubiera sabido esto antes!
Steph Rose
49
Ran mysqladmin variables. ¿Qué hacer cuando error: 'Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)'? :)
Alexander Wallin
Recibo el mismo error que @afEkenholm y no he podido encontrar una solución. Corrí sudo find / -name mysql.sockdesde el directorio raíz y no pude encontrar mysql.sock en ninguna parte del sistema. Instalé MySQL usando el archivo dmg de 64 bits para Mac OS 10.7. Ejecutando Mavericks actualmente.
b_dubb
@b_dubb Yo soy igual con tu situación, ¿cómo resolviste tus problemas?
MeganZhou
1
Para buscar rápidamente el parámetro de socket sin que todos los demás lo hagan: variables mysqladmin | zócalo grep
BAR
48

Esto resolvió mi problema

mysql_config --socket

ACTUALIZAR

mysql_config puede decirnos dónde debería estar el archivo mysql.sock, pero en mi caso el archivo no existía. Entonces, borré my.cnf:

sudo rm -rf /etc/my.cnf

Y luego reinició mysql:

brew services restart mysql

El archivo fue creado y mysql ahora está funcionando bien.

Eugenio Ramírez
fuente
7
Ese comando le dice dónde está mysql.sock que responde la pregunta
Eugene Ramirez
3
Este comando no le dice dónde está el archivo. Le dice dónde lo está buscando mysql: el ajuste de configuración para el --socket.
morksinaanab
No tengo ¿ ls: /etc/my.cnf: No such file or directoryPuede ser que tenga que crearlo primero?
Abhi
si no tiene archivo en, /etc/my.cnfintente mirar /usr/loca/etc/my.cnf- @Abhi
rwcorbett
20

El archivo de socket debe crearse automáticamente cuando se inicia el demonio MySQL.

Si no se encuentra, lo más probable es que el directorio que se supone que lo contiene no exista, o algún otro problema del sistema de archivos esté impidiendo la creación del socket.

Para saber dónde debería estar el archivo, use:

% mysqld --verbose --help | grep ^socket
Alnitak
fuente
4
O mysql --verbose --help | grep ^ socket
Ondrej Rafaj
1
@Ondrej seguramente eso te dice dónde cree el cliente que está mirando. ¡El punto de la ejecución mysqldes que debería decirle dónde lo puso realmente el servidor !
Alnitak
en mi instalación de xampp no ​​pude encontrar el demonio, así que intenté sin él y funcionó :) ... lo que sucedió detrás de escena no tengo ni idea ...
Ondrej Rafaj
19

Esto lo encontró para mí:

netstat -ln | grep mysql

Mac OS X

zero_cool
fuente
10

Mi problema también fue el archivo mysql.sock.

Durante el proceso de instalación de drupal, tuve que decir qué base de datos quiero usar pero no se encontró mi base de datos

mkdir /var/mysql
ln -s /tmp/mysql.sock /var/mysql/mysql.sock

el sistema está buscando mysql.sock pero está en el directorio incorrecto

todo lo que tienes que hacer es vincularlo;)

Me tomó mucho tiempo buscar en Google toda la información importante, pero me tomó incluso horas descubrir cómo adaptarme, pero ahora puedo presentar el resultado: D

ps: si desea ser exactamente, debe vincular su /tmp/mysql.sock-file(si también se encuentra en su sistema allí) al directorio proporcionado por php.ini (o php.default.ini) dondepdo_mysql.default_socket= ...

Matthias D.
fuente
Después de cambiar en php.ini pdo_mysql.default_socket, debe reiniciar el servidor web para que se carguen los cambiossudo apachectl restart
Szekelygobe
5

Obtuve la ruta exacta usando:

netstat -ln | grep -o -m 1 -E '\S*mysqld?\.sock'

Dado que esto solo devuelve la ruta y no requiere ninguna entrada, podría usarlo en un script de shell.

MySQL debe estar ejecutándose actualmente en su máquina para que esto funcione. También funciona para MariaDB.

mattbell87
fuente
¡Gran respuesta! Esto realmente encuentra la ubicación del socket, a diferencia de las otras respuestas.
Tyler Christian
2

Las preguntas originales parecen provenir de la confusión acerca de a) dónde está el archivo yb) dónde se está buscando (y por qué no podemos encontrarlo allí cuando hacemos una localización o un grep). Creo que el punto de Alnitak fue que desea encontrar dónde estaba vinculado, pero grep no le mostrará un vínculo, ¿verdad? El archivo no vive allí, ya que es un enlace, es solo un puntero. Aún necesita saber dónde colocar el enlace.

mi archivo de calcetín está definitivamente en / tmp y el ERROR que obtengo es buscarlo en / var / lib / (no solo / var) Me he vinculado a / var y / var / lib ahora, y todavía recibo el error "No se puede conectar al servidor MySQL local a través del conector 'var / lib / mysql.sock' (2)".

Tenga en cuenta el (2) después del error ... encontré en otro hilo que esto significa que se podría intentar usar el socket, pero algo está mal con el socket en sí, así que para apagar la máquina, por completo, para que el enchufe se cierra. Entonces, un reinicio debería solucionarlo. Intenté esto, pero no funcionó para mí (ahora me pregunto si reinicié demasiado rápido? ¿De verdad?) Tal vez sea una solución para otra persona.

Amy D
fuente
1
$ mysqladmin variables | grep sock

Intente esto en su lugar, esto generará el resultado solicitado, eliminando la información no relacionada.

soarinblue
fuente
0

Para actualizar la base de datos de la localización ejecuté

/usr/libexec/locate.updatedb
Timbinoso
fuente
0

(P1) ¿Cómo puedo encontrar el archivo de socket?

La ubicación predeterminada para el archivo de socket es /tmp/mysql.sock, para encontrar el archivo de socket para su sistema use esto.

mysqladmin variables | grep socket

Si acaba de instalar MySql, el archivo mysql.sock no se creará hasta que se inicie el servidor. Utilice este comando para iniciarlo.

sudo launchctl load -F /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist

Si se le solicita una contraseña, puede pasar el nombre de usuario raíz u otro nombre de usuario como este. Terminal le pedirá la contraseña.

mysqladmin --user root --password variables | grep socket

(Q2) ¿Cómo puedo actualizar el índice de localización?

Actualice la base de datos de localización con este comando.

sudo /usr/libexec/locate.updatedb
Padhraic
fuente
0

Recibo el mismo error en Mac OS X 10.11.6:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

Después de muchos consejos agonizantes y de indagación aquí y en preguntas relacionadas, ninguno de los cuales parecía solucionar el problema, regresé y eliminé las carpetas instaladas, y simplemente lo hice brew install mysql.

Sigue recibiendo el mismo error con la mayoría de los comandos, pero esto funciona:

/usr/local/bin/mysqld

y devuelve:

/ usr / local / bin / mysqld: listo para conexiones.

Versión: '5.7.12' socket: '/tmp/mysql.sock' puerto: 3306 Homebrew

szeitlin
fuente
0

No pude encontrar el socket mysql en absoluto, así que reinstalé el servidor mysql (se conservaron todas las tablas y la configuración de phpmyadmin). Aquí están los comandos:

1) Instalar

sudo apt-get install mysql-server

2) Siga los pasos de configuración del terminal

sudo mysql_secure_installation

3) Verifique el estado: (Debe devolver "Activo: activo (en ejecución)")

systemctl status mysql.service

Nika Tsogiaidze
fuente
0

Desafortunadamente, ninguno de los anteriores ha funcionado en mi caso. Pero finalmente encontré soluciones.

Para encontrar dónde está el archivo mysql.sock, simplemente abra el administrador xampp, seleccione MySQL y haga clic en Configurar a la derecha. En el panel de configuración, haga clic en Abrir archivo de configuración y simplemente busque mysql.sock presionando el acceso directo CMD + F.

En mi caso, se cambió el propietario de mysql.sock y tuve que volver a cambiarlo a root admin con: chmod root: admin mysql.sock

Después de eso, se había accedido a la base de datos.

szatti1489
fuente
-4

No puedo ayudar con la pregunta # 1, pero para actualizar locatela base de datos de archivos, ejecute:

updatedb
Abedul de Chad
fuente