No se puede conectar al servidor MySQL local a través del socket '/tmp/mysql.sock' (2)

143

He instalado el servidor MySQL e intento conectarme a él, pero aparece el error:

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

He revisado mi directorio / tmp y no hay mysql.sock. No puedo encontrar mysql.sock en ningún lado. Leí que podría estar en

    /var/lib/mysql/mysql.sock

Pero también revisé allí e incluso no hay un directorio mysql, solo algo de postfix dentro de / lib. ¿Alguien podría ayudarme con este problema?

usuario3344382
fuente
2
Estoy trabajando en Mac OS X
user3344382
Hola, ¿puedes pegar el comando que estás utilizando para conectarte? ¿También has comenzado MySQL?
Mark Butler
@ MarkButler Estoy usando este comando: / usr / local / mysql / bin / mysql
user3344382
bien, es solo que el servidor no se estaba ejecutando. Sin embargo, todavía no puedo entender dónde está mysql.sock, ¿podría haber otros lugares ocultos donde pueda residir?
user3344382
Este error es muy general y puede ser por varias razones. Para un resumen ordenado, vea aquí: medium.com/@7anac/…
Janac Meena

Respuestas:

272

Intente iniciar el servidor MySQL:

mysql.server start

Casey Robinson
fuente
44
¡ERROR! El servidor se
cerró
1
@wegginho Posible solución a su mensaje de error si instaló MySQL a través de un error PID
Casey Robinson
olvidé iniciar servicios mysql!
GeekHades
1
@bastianwegge intente verificar el archivo de error en /usr/local/var/mysql/USERNAME.local.err en mi caso tuve que eliminar /tmp/mysql.sock y luego reiniciar usandomysql.server start
Josh Bradley
61

Recibí la misma pregunta después de actualizar OS X Yosemite, bueno, la solución es bastante simple, verifique las preferencias del sistema -> mysql, el estado era STOP. Simplemente reinícielo y funciona bien en mi Mac ahora.

keren
fuente
1
Muchas gracias @keren tan simple, perdí unos buenos 45 minutos en cambiar la configuración de mi archivo my.cnf cuando todo el tiempo este era el único problema.
kandroidj
También funcionó para mí, gracias, no tenía idea en términos de instalación de DMG.
Rameshwar Vyevhare
Esto desafortunadamente no me ayudó
simhumileco
Simple y asombroso!
Desmond DAI
66
¿Um que? ¿Por qué las Preferencias del sistema de OSX tienen una opción MySQL?
AlxVallejo
45

Para MAMP

ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock

Desde https://coderwall.com/p/w5kwzw/solved-can-t-connect-to-local-mysql-server-through-socket-tmp-mysql-sock

ACTUALIZACIÓN: Cada vez que mi computadora se reinicia, tengo que ingresar este comando, así que creé un acceso directo.

Haga lo siguiente en tipo de terminal:

~: vi ~/.profile

Añadir

alias ...='source ~/.profile'
alias sockit='sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock'

Salvar.

En tipo de terminal:

~: ... para obtener la configuración .profile.

Ahora en la terminal puedes simplemente escribir

~: sockit
Bryan
fuente
1
Increíble. Justo la solución que estaba buscando.
JoshHighland
1
He vuelto a esta publicación varias veces y siempre funciona.
Trey Copeland
Actualizado a mysql 5.7.1 fuera de MAMP y se encontró con el error. Esto me lo arregló
David
Si estás en un libro de mac y ves MAMP esto funciona
kelrob-dev
32

El siguiente comando resolvió mi problema:

sudo chown -R _mysql:mysql /usr/local/var/mysql

sudo mysql.server start
Nikesh Suwal
fuente
1
Después de buscar durante 3 horas, esto resolvió mi problema. Acabo de instalar mysql a través de homebrew, brew install mysqlpero ninguno de los comandos que homebrew me dijo que ejecutara funcionó correctamente. Esto hizo que todos los problemas desaparecieran ... ¡Gracias! ¿Qué es exactamente esa primera línea que escribiste? Qué significa eso?
mesqueeb
Gracias, funciona bien!
Nirojan Selvanathan
1
Hola para mí fue: sudo chown -R _mysql: mysql / usr / local / mysql / data
Junaid Bhura
chown -R cambiar el propietario -R recursivamente
Hos Mercury
Un original 10.13.1 y homebrew dieron este error al instalar mariadb (10.2.10). Este cambio de propietario lo solucionó, por lo que ahora sudo brew services start mariadbtambién funciona para iniciar mariadb en el arranque (no solo al iniciar sesión). ¡HURRA! ¡Gracias!
iggie
16

Después de probar todas las soluciones, funcionó solo para mí después de especificar el host

mysql -u root -p -h127.0.0.1

al pedir contraseña

Enter password:

presione enter

y funcionará, si todo está bien como arriba.

Hos Mercury
fuente
2
Configuré mysql con un contenedor docker usando Docker para Mac, y asigno su puerto 3306 a Mac. Sin agregar el -h 127.0.0.1, siempre se solicita Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2); después de agregar el argumento, funciona bien.
Evi Song
1
Esto se debe a que pasar por 127.0.0.1 no usa el socket, creo. Más de una solución limitada.
Lucas Morgan
1
Ejecutar mysql -u root -h127.0.0.1 sin la -pbandera funcionó para mí, ya que cuando instalé MySQL nunca ejecuté el mysql_secure_installationcomando. Tengo entendido que en este caso la instalación por defecto no requiere contraseña.
Richie Thomas
1
Trabajado como un encanto !
Panduka DeSilva
10

Después de luchar durante horas, lo único que funcionó fue

sudo mysql.server start

Luego haga una instalación segura con

mysql_secure_installation 

Luego, conéctese a la base de datos a través de

mysql -uroot -p

Mysql se instala a través de homebrew y la versión es

Server version: 5.7.21 Homebrew

Especificar la versión puede ser útil ya que la solución puede ser diferente según la versión.

Krishnadas PC
fuente
9

En su archivo de configuración de mysql, que está presente, /etc/my.cnfrealice los cambios a continuación y luego reinicie el mysqldproceso de dameon

[client]
socket=/var/lib/mysql/mysql.sock

También revise este hilo relacionado

No se puede conectar al servidor MySQL local a través del socket '/tmp/mysql.sock

Rahul
fuente
no hay un archivo my.cnf en el directorio / etc. Creo que puedo crear ese archivo manualmente, pero como dije no hay un directorio mysql en / var / lib, ¿cómo puede estar el socket allí?
user3344382
Verifique el hilo relacionado que he publicado, así como también si su servidor mysql se está ejecutando o no.
Rahul
He encontrado en el archivo/etc/mysql/my.cnf
Devon
si lo instaló con brew, debe usarlo /tmp/mysql.sockcomo la ubicación del calcetín
Mark Shust en M.academy
8

Lo siguiente resolvió mi problema:

Verifique dónde está enlistado su servidor MySQL: netstat -nlp Si está enlistado a TCP, use 127.0.0.1 mientras se conecta a DB en lugar de "localhost"

Consulta el documento de MySQL aquí

Umesh
fuente
esto parece funcionar para mí y demuestra que mysql está vivo, pero ¿por qué no puedo conectarme al socket local?
Colin D
8

Prueba esto, funcionó para mí.

sudo /usr/local/mysql/support-files/mysql.server start

vasanth vasu
fuente
¿Por qué este camino? mientras usa el comando "¿dónde está mysql" (MAC OS) dando salida /usr/local/mysql/bin/. ¿Cómo identificar esta ruta en Mac?
Vineeth Bhaskaran
Sí, el camino cambia en consecuencia
vasanth vasu
4

Si está utilizando XAMPP en Mac OS X y ha instalado MySQL con Homebrew, puede tener este problema. En la ventana del administrador XAMPP, vaya a Administrar servidores y seleccione MySQL, luego haga clic en configurar y abra el archivo de configuración, allí tiene la ruta del archivo socket, coloque la ruta en la configuración de su host MySQL y debería funcionar.

Es algo como esto:

...
[client]
#password   = your_password
port        = 3306
socket      = /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
...

entonces, por ejemplo en Django:

...    
DATABASES = {
        "default": {
            "ENGINE": "django.db.backends.mysql",
            "NAME": "database_name",
            "USER": "user",
            "PASSWORD": "password",
            "HOST": "/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock",
            "PORT": "",
        }
    }
...

Espero que esto ayude.

El Cairo
fuente
3

Primero, saber dónde estaba el directorio de datos para mí fue la clave. /usr/local/var/mysql Aquí, había al menos un archivo con la extensión .err precedido por el nombre de mi máquina local. Tenía toda la información que necesitaba para diagnosticar.

Creo que me equivoqué instalando mysql 8 primero. Mi aplicación no es compatible con ella, así que tuve que bajar a 5.7

Mi solución que funcionó para mí fue /usr/local/etc/my.cnf

Encuentra esta línea si está ahí. Creo que está relacionado con MySQL 8:

mysqlx-bind-address = 127.0.0.1 

Eliminarlo porque en el mysql 5.7 dice que no le gusta en el registro de errores

Agregue también esta línea allí si no está debajo de la dirección de enlace.

socket=/tmp/mysql.sock

Vaya al /tmpdirectorio y elimine los archivos mysql.sock allí. Al iniciar el servidor, recreará los archivos de calcetines

Elimine el directorio de datos con mySQL en el estado detenido. El mío era /usr/local/var/mysql . Este es el mismo lugar donde están los registros

Desde allí corrí

>mysqld --initialize

Entonces todo comenzó a funcionar ... este comando le dará una contraseña aleatoria al final. Guarde esa contraseña para el siguiente paso

Ejecutando esto para asignar mi propia contraseña.

>mysql_secure_installation 

Ambos

>brew services stop mysql@5.7

y

>mysql.server start

ahora están trabajando Espero que esto ayude. Son aproximadamente 3 horas de prueba y error.

adrian
fuente
3

Primero escriba esto:

brew services start mysql

Luego esto -:

mysql -uroot
Rudra shah
fuente
0

He pasado mucho tiempo haciendo esto, quiero poner mi aplicación django en mi servidor y cuando ejecuté python manage.py migrateme encontré con estas preguntas

¡¡Y!! Configuré esto ¡ ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock Funcionó finalmente!

LittleCabbage
fuente
0

Escriba el terminal de la siguiente manera:

mysql.server start
Frank Cheng
fuente
0

Detener e iniciar el servidor mysql desde la terminal resolvió mi problema. A continuación se muestran los cmds para detener e iniciar el servidor mysql en MacOs.

sudo /usr/local/mysql/support-files/mysql.server stop
sudo /usr/local/mysql/support-files/mysql.server start

Nota: Reiniciar los servicios desde la preferencia del sistema Mac no resolvió el problema en mi Mac. Así que intenta reiniciar desde la terminal.

Lakshmi Narayanan
fuente
0

Si está ejecutando en un macOS, es más fácil verificar primero ir a 'Preferencias del sistema' y ver si MySQL se está ejecutando o no.

Micah Lotemo
fuente
-1

Para CentOS, el archivo para iniciar mysql se encuentra aquí:

/etc/init.d/mysqld start
etusm
fuente