error: 'No se puede conectar al servidor MySQL local a través del socket' /var/run/mysqld/mysqld.sock '(2)' - Falta /var/run/mysqld/mysqld.sock


322

Mi problema comenzó porque ya no podía iniciar sesión como root en mi instalación de mysql. Intentaba ejecutar mysql sin tener las contraseñas activadas ... pero cada vez que ejecutaba el comando

# mysqld_safe --skip-grant-tables &

Nunca volvería a recibir el aviso. Intenté seguir estas instrucciones para recuperar la contraseña .

La pantalla se ve así:

root@jj-SFF-PC:/usr/bin# mysqld_safe --skip-grant-tables
120816 11:40:53 mysqld_safe Logging to syslog.
120816 11:40:53 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

y no recibo un mensaje para comenzar a escribir los comandos SQL para restablecer la contraseña.

Cuando lo mato presionando CTRL+ C, aparece el siguiente mensaje:

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

Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!

Si reintento el comando y lo dejo el tiempo suficiente, recibo la siguiente serie de mensajes:

root@jj-SFF-PC:/run/mysqld# 120816 13:15:02 mysqld_safe Logging to syslog.
120816 13:15:02 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
120816 13:16:42 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

[1]+  Done                    mysqld_safe --skip-grant-tables
root@jj-SFF-PC:/run/mysqld#

Pero luego, si intento iniciar sesión como root haciendo:

# mysql -u root

Me sale el siguiente mensaje de error:

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

Lo comprobé y /var/run/mysqld/mysqld.sock archivo no existe. La carpeta sí, pero no el archivo.

Además, no sé si esto ayuda o no, pero corrí find / -name mysqldy se me ocurrió:

/var/run/mysqld - folder
/usr/sbin/mysqld - file
/run/mysqld - folder

Soy nuevo en Linux y MySQL, así que no sé si esto es normal o no. Pero incluyo esta información en caso de que ayude.

Finalmente decidí desinstalar y reinstalar mysql.

apt-get remove mysql-server
apt-get remove mysql-client
apt-get remove mysql-common
apt-get remove phpmyadmin

Después de reinstalar todos los paquetes nuevamente en el mismo orden que antes, durante la instalación de phpmyadmin, recibí el mismo error:

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

Así que intenté nuevamente desinstalar / reinstalar. Esta vez, después de desinstalar los paquetes, también cambié manualmente el nombre de todos los archivos y directorios de mysql mysql.baden sus ubicaciones respectivas.

/var/lib/mysql 
/var/lib/mysql/mysql
/var/log/mysql
/usr/lib/perl5/DBD/mysql
/usr/lib/perl5/auto/DBD/mysql
/usr/lib/mysql
/usr/bin/mysql
/usr/share/mysql
/usr/share/dbconfig-common/internal/mysql
/etc/init.d/mysql
/etc/apparmor.d/abstractions/mysql
/etc/mysql

Luego intenté reinstalar mysql-servery mysql-clientnuevamente. Pero he notado que no me pide una contraseña. ¿No se supone que debe solicitar una contraseña de administrador?


Tengo el mismo problema. Lo resolví hace un momento. stackoverflow.com/questions/18150858/…
robert


resuelto simplemente reiniciando el servidor, luego reinicia el servicio mysql
bowpunya

@Anto Esto no es un duplicado. Este le /var/run/mysqld/mysqld.sockfalta. El problema que vinculó tiene ese archivo.
motorbaby

Ninguna de las respuestas aquí ni en ningún otro lugar que pude encontrar resolvió mi problema. Como era un proyecto nuevo, cambié a PostgreSQL y ¡simplemente funciona! :-)
James Bradbury

Respuestas:


195

Para encontrar todos los archivos de socket en su sistema, ejecute:

sudo find / -type s

Mi sistema de servidor Mysql tenía el socket abierto en /var/lib/mysql/mysql.sock

Una vez que encuentre dónde se abre el socket, agregue o edite la línea a su archivo /etc/my.cnf con la ruta al archivo del socket:

socket=/var/lib/mysql/mysql.sock

A veces, el script de inicio del sistema que lanzó el ejecutable de la línea de comandos especifica un indicador --socket=path. Este indicador podría anular la ubicación my.cnf, y eso provocaría que no se encuentre un socket donde el archivo my.cnf indica que debería estar. Luego, cuando intente ejecutar el cliente de línea de comandos mysql, leerá my.cnf para encontrar el socket, pero no lo encontrará ya que se desvía del lugar donde el servidor creó uno. Entonces, a menos que le importe dónde reside el zócalo, simplemente cambiar el my.cnf para que funcione debería funcionar.

Luego, detenga el proceso mysqld. La forma de hacerlo variará según el sistema.

Si eres súper usuario en el sistema Linux, prueba una de las siguientes opciones si no conoces el método específico que usa tu configuración de Mysql:

  • service mysqld stop
  • /etc/init.d/mysqld stop
  • mysqladmin -u root -p shutdown
  • Algunos sistemas no están configurados para tener una manera elegante de detener mysql (o por alguna razón mysql no responde) y puede forzar la terminación de mysql con:
    • Un paso: pkill -9 mysqld
    • Dos pasos (menos preferido):
      • Encuentre la identificación del proceso de mysql con cualquiera pgrep mysqlops aux | grep mysql | grep -v grep
      • Suponiendo que la identificación del proceso 4969finaliza conkill -9 4969

Después de hacer esto, es posible que desee buscar un archivo pid /var/run/mysqld/y eliminarlo

Asegúrese de que los permisos en su socket sean tales que cualquier usuario que mysqld esté ejecutando pueda leerlo / escribirlo. Una prueba fácil es abrirlo a lectura / escritura completa y ver si aún funciona:

chmod 777 /var/run/mysqld/mysqld.sock

Si eso soluciona el problema, puede personalizar los permisos y la propiedad del socket según sea necesario según su configuración de seguridad.

Además, el directorio en el que reside el socket debe ser accesible por el usuario que ejecuta el proceso mysqld.


15
Por favor no recomiendo usar kill -9; Hay varias formas de probarlo antes de que tenga que llegar a eso.
Ignacio Vazquez-Abrams

@dot ejecuta esto en la raíz del archivo 'find. -nombre mysqld.sock '. He visto el archivo de socket en otros lugares que no son / var / run. Una vez que lo encuentre, es posible que necesite editar su archivo my.cnf para señalar dónde se encuentra.
Ray

@ray, intenté ejecutar el comando original de una manera diferente (encontré una publicación específica de ubuntu en otro sitio ...). Aquí están los comandos que ejecuté: "sudo service mysql stop" y "sudo mysqld --skip-grant-tables". Después de ejecutar el segundo comando, aparece el siguiente error: "InnoDB: no se puede bloquear ./ibdata1, error: 11". No puedo encontrar este archivo ./ibdata1 ... InnoDB: compruebe que todavía no tiene otro proceso mysqld
punto

2
@dot ejecutar ps -aux | grep mysqldy ver si se están ejecutando otros procesos mysql
Ray

@rayo. Me estoy arrancando el pelo, hombre. decidí volar mysql y volver a intentarlo ... tenga en cuenta mi publicación actualizada.
punto

251

Prueba este comando,

sudo service mysql start

+1 my.cnf estaba apuntando a los directorios correctos, por servicio mysql había muerto
wruckie

Intenté la respuesta aceptada pero no pude encontrar el mysql.sock, esto funcionó para mí. Gracias
Giovanne Afonso

1
Tuve que usarsudo service mysqld start
Gavin Miller

10
sudo apt-get install mysql-serversi aún no lo tienes instalado :)
aimme

17
Si encuentra este problema, ejecute este comando simple PRIMERO antes de probar las otras cosas, solo tomará un segundo, y si el servidor simplemente no se está ejecutando, y está bien después de iniciarlo, solo significa que no lo hizo. t autostart, que entonces sería el problema real para resolver.
Lizardx

137

Este error ocurre debido a múltiples instalaciones de mysql. Ejecute el comando:

ps -A|grep mysql

Mata el proceso usando:

sudo pkill mysql

y luego ejecuta el comando:

ps -A|grep mysqld

También elimine este proceso ejecutando:

sudo pkill mysqld

Ahora que está completamente configurado, simplemente ejecute los siguientes comandos:

service mysql restart
mysql -u root -p

Tener muy bien trabajando mysql nuevamente


Hola amigos, estaba corriendo por toda la web tratando de arreglar esto. Mi problema era que estaba tratando de configurar la ventana acoplable. Quería que usara el directorio de datos mysql que anteriormente usaba mysql fuera de docker ... ¡ese comando ps fue el mejor!
Michael

3
Después de correr por toda la web durante más de 4 horas, esto finalmente funcionó. Debería ser la respuesta principal: +1:
Shivam Gaur

44
El trabajo para mysql.service falló porque el proceso de control salió con un código de error. Consulte "systemctl status mysql.service" y "journalctl -xe" para más detalles.
John Joe

1
El trabajo para mysql.service falló porque el proceso de control salió con un código de error. Consulte "systemctl status mysql.service" y "journalctl -xe" para más detalles.
Adib Aroui

Tnx, me ahorras tiempo.
Aleksandur Atanasov

41

La solución es mucho más fácil.

  1. Primero, debe ubicar (en la Terminal con "sudo find / -type s") donde mysql.sockse encuentra su archivo. En mi caso fue en/opt/lampp/var/mysql/mysql.sock
  2. Inicie Terminal y emita sudo Nautilus
    Esto inicia su administrador de archivos con privilegios de superusuario
  3. Desde Nautilus navegue hasta donde mysql.sockse encuentra su archivo
  4. Haga clic derecho en el archivo y seleccione Crear enlace
  5. Cambie el nombre del archivo de vínculo a mysqld.sockhaga clic derecho sobre el archivo y corte se
  6. Ve /var/runy crea una carpeta llamada mysqlde ingrésala
  7. Ahora haga clic derecho y pegue el archivo de enlace
  8. Voila! Ahora tendrá un mysqld.sockarchivo en /var/run/mysqld/mysqld.sock:)

44
¿Cómo ubica su archivo mysql.sock? Intenté encontrar / -name 'mysql.sock' pero no devuelve nada.
Matthew Lock

2
@MatthewLock En primer lugar, asegúrese de que mysql se esté ejecutando (por "ps aux | grep mysql"), de lo contrario, no aparecería mysql.sock. En segundo lugar, use "sudo find / -type s", que le brinda todos los sockets en su sistema para localizar mysql.sock
narengi

35
¿Qué pasa si la salida de sudo find / -type sno contiene ninguno mysql.sock?
Jeff

1
Funciona. Pero no tengo idea de por qué estos desarrolladores nunca hicieron este trabajo en los últimos años.
Yi Jiang

2
Si es difícil saber dónde está mysql.sock a través de "find / -type s", intente usar el comando "mysql_config --socket". Puede instalarlo con sudo apt-get install libmysqlclient-dev
alexche8

26

Solo necesito iniciar el servicio MySQL después de la instalación:

Para Ubuntu:

sudo service mysql start;

Para CentOS o RHEL:

sudo service mysqld start;

Comprueba primero por esto sudo systemctl status mysql.servicey sudo systemctl start mysql.service. Esto funciona para mí
Byeongin Yoon

16

Hay un error en Ubuntu con MySQL 5.6 y 5.7 var/run/mysqld/que desaparecería cada vez que el servicio MySQL se detuviera o se reiniciara. Esto evita que MySQL se ejecute en absoluto. Encontré esta solución alternativa, que no es perfecta, pero al menos lo pone en funcionamiento después de detener / reiniciar:

mkdir /var/run/mysqld/
chown mysqld /var/run/mysqld/

gracias - lo arreglé para mí, tengo que rehacer el directorio y restablecer la propiedad en cada reinicio del servicio mysql - no he podido encontrar el error reportado oficialmente en ningún lado o habría publicado el enlace aquí :)
djoe

1
No lo he intentado, pero tal vez te ayude: Crea un nuevo archivo /etc/tmpfiles.d/mysql.conf: # systemd tmpfile settings for mysql # See tmpfiles.d(5) for details y luego, d /var/run/mysqld 0755 mysql mysql - después de reiniciar, mysql debería comenzar normalmente. Esto es de bugs.launchpad.net/ubuntu/+source/mysql-5.6/+bug/1435823 , comentario 3. Si tuvo este problema con MySQL 5.7, comente en Launchpad. Cuantos más usuarios aborden el problema, más atención recibirá.
motorbaby

Funcionó para mí ... tuve que usar mysql como nombre de usuario y no mysqld sin embargo
Evan Parsons

Agregar línea al /etc/tmpfiles.d/mysql.confcomentario por motorbaby solucionó este problema para mí. En un sistema operativo Centos 7 y usando mysql Ver 15.1 Distrib 10.3.11-MariaDB,.
turrican_34

Esto solucionó el problema para mí.
shikata

14

De acuerdo, solo copie y pegue estos códigos: Esto debe hacerse en la terminal, dentro de un servidor, cuando su base de datos mysql no está instalada correctamente y cuando obtiene este error: 'No se puede conectar al servidor MySQL local a través del socket' / var / run / mysqld / mysqld.sock '(2)'.

Detener MySql

sudo /etc/init.d/mysqld stop

Reiniciarlo o iniciarlo

sudo /etc/init.d/mysqld restart or sudo /etc/init.d/mysqld start

Haga un enlace como este y déselo al sistema

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

Ejecute una instalación segura que guíe todo el proceso que necesita hacer para configurar mysql

/usr/bin/mysql_secure_installation

me sale el mismo Can't connecterror cuando intento ejecutar el comando anterior.
cjmling

Simplemente algo que descubrí, para aquellos que ejecutan ubuntu. Si inicia mysqld usando /etc/init.d/mysqld start, se encontrará con este problema de todos modos. Utilice el servicio mysql start en su lugar y estará bien. Exasperante, pero al final lo descubrí.
Adam Short

11

Enfrenté el mismo error y descubrí que se debía a la actualización de los paquetes, así que después de reiniciar mi sistema resolví el error.

Creo que debido a la actualización de paquetes / bibliotecas sql se produjo ese error, así que intente esto si está realizando alguna actualización :)


1
Hice esto después de reinstalar (o actualizar) y ahora funciona. No más mensajes de socket. ¡Gracias!
wraithie

8

Hay muchas razones para este problema, pero a veces solo reinicie el servidor mysql, lo solucionará.

sudo service mysql restart

7

Usando XAMPP en ubuntu:

  1. Cree una carpeta llamada mysqld dentro del directorio / var / run . Puede lograr eso usando el comando sudo mkdir /var/run/mysqld.

  2. Cree un enlace simbólico al archivo mysql.sock creado por el servidor XAMPP cuando se inicia. Puedes usar el comando sudo ln -s /opt/lampp/var/mysql/mysql.sock /var/run/mysqld/mysqld.sock.

Nota: El archivo mysql.sock se crea cuando se inicia el servidor y se elimina cuando se detiene el servidor, por lo que a veces el enlace que creó puede parecer roto, pero debería funcionar siempre que haya iniciado el servidor utilizando uno sudo /opt/lampp/lampp startu otro medio.

  1. Inicie el servidor si aún no se está ejecutando e intente ejecutar su programa nuevamente.

¡Buena suerte! Espero que te salgas con la tuya esta vez.


@MohsinKhan vaya a localhost / phpmyadmin e importe la base de datos desde allí
Robert Odoch

6

La respuesta del paso de carga del usuario funcionó para mí. A veces es necesario editar el archivo en /etc/mysql/my.cnfagregar línea al cliente

[client]
password = your_mysql_root_password
port  = 3306
host  = 127.0.0.1
socket  = /var/lib/mysql/mysql.sock

Esto me da:mysql: unknown variable 'Host=127.0.0.1'
Splaktar

@Splaktar: hay un error tipográfico. Hostdebe estar en minúsculas hosty funcionará. Además, esta solución funcionó para mí.
Mohammad Faisal

Brillante: esto está funcionando para mí y para mi entorno de Docker: solo tuve que ajustar la IP, que en mi caso es el Docker mysql container ip 172.17.xx
InforMedic

6

* Error: 'No se puede conectar al servidor MySQL local a través del socket' /var/run/mysqld/mysqld.sock '(2)'

soluciones

finalmente desinstale y reinstale mysql. ** **

  • sudo apt-get eliminar mysql-server
  • sudo apt-get eliminar mysql-client
  • sudo apt-get eliminar mysql-common
  • sudo apt-get eliminar phpmyadmin

luego instalar nuevamente por

  • sudo apt-get install mysql-server-5.6

Después de esta operación, se utilizarán 164 MB de espacio en disco adicional.

  • ¿Quieres continuar? [S / n] S presione YES para completar las instalaciones

...... .......

  • Por fin obtendrás estas líneas ...

    Configuración de libhtml-template-perl (2.95-1) ...

    Configurando mysql-common-5.6 (5.6.16-1 ~ exp1) ... Procesando disparadores para libc-bin (2.19-0ubuntu6) Procesando disparadores para ureadahead (0.100.0-16) ...

  • Y entonces

    root @ ubuntu1404: ~ # mysql -u root -p (para cada contraseña primero debe usar)

  • Introducir la contraseña:

  • Nota: la contraseña ingresada debe ser la misma que la contraseña de tiempo de instalación de mysql (como .root, system, admin, rahul, etc.)

    Luego escribe

  • USE rahul_db (nombre de la base de datos);

Gracias.**


por favor mejore la calidad de respuesta
Mo.

Esto funcionó para mí debido a las múltiples versiones de mysql instaladas. también quitar mysql-server-5.6/5.5, mysql-client-5.6/5.5. ¡Gracias!
Luuk Skeur

conseguido E: Package 'mysql-server-5.6' has no installation candidate, no existe en Ubuntu 18.04
juliocesar

6

Asegúrese de que la ruta del archivo de socket inaccesible sea la misma que '/var/run/mysqld/mysqld.sock'; de lo contrario, cambie la ruta como la suya. Detener el mysqld

$ sudo /etc/init.d/mysqld stop

Si el proceso aún se está ejecutando;

$ sudo pkill -9 mysqld

Elimine el directorio mysql donde se creará el socket. Para mí no permitía eliminar, por lo que tuve que eliminar con fuerza.

$ sudo mkdir -p /var/run/mysqld

Establecer la propiedad del directorio

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

Comience mysql

$ sudo /etc/init.d/mysql start

Intentando conectar mysql

$ sudo mysql -u dbuser -p

Sí, esa es la misma respuesta que di el 14 de febrero de 19 a las 11:56 (ver más abajo)
Ingo

Eres un salvavidas.
Sahib Khan

5

Creo que su servidor MySQL no se ha iniciado. Inicie el servidor utilizando uno de los siguientes comandos.

#services mysql start

o

#/etc/init.d/mysql start

5

Solución temporal

Quizás alguien enfrentando este problema. Estoy usando Mysql Workbench en Ubuntu 14 y obtuve este error.

mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) when trying to connect

Encuentra tu archivo de socket ejecutando sudo find / -type s, en mi caso fue/run/mysqld/mysqld.sock

Entonces, acabo de crear un enlace a este archivo en el tmpdirectorio.

sudo ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock

Como puede ver, la ubicación del archivo está en la /tmpcarpeta, por lo que se eliminará con seguridad. Puedes cambiar .sockla ubicación del archivo. Ver @ user3002884 respuesta.
Bilal

Lo sé, estaba completando su respuesta para que otros usuarios sepan antes que la solución es solo temporal, como la carpeta
Alex Burdusel

Me salvaste la vida :)
Mashpy Rahman

4

puede encontrar mysqld.socken /var/run/mysqldsi ya ha instalado mysql-server porsudo apt-get install mysql-server


4

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

en /etc/my.cnfagregar estas líneas:

[client]
socket=/var/lib/mysql/mysql.sock <= this path should be also same as is[mysqld]

Y reinicie el servicio con: service mysql restart

esto funcionó para mí


4

Esto ya se mencionó un par de veces, pero esto funcionó de inmediato para mí:

servicio mysql reiniciar


Interesante cómo esto es diferente de usar solo el simple comando "mysql"
luminol

3

En mi caso, se estaban ejecutando dos procesos mysqld ... mataron los procesos opcionales usando pkill -9 mysqld


Necesitaba agregar el 'sudo' para matar el proceso.
noti

3

Si tiene muchas bases de datos y tablas en su sistema, y ​​si se ha innodb_file_per_tableconfigurado en my.cnf, entonces su servidor mysql podría haberse quedado sin objetos / archivos abiertos (o más bien los descriptores para estos objetos) Establezca un nuevo número máximo con

open-files-limit = 2048

y reinicie mysql. Este enfoque puede ayudar cuando el socket no se crea en absoluto, pero realmente puede que este no sea el verdadero problema, hay un problema subyacente.


2

Acabo de tener este problema en Ubuntu 14.10

Turnos que mysql-serverya no se instalaron (de alguna manera se habían eliminado) pero no pude simplemente instalarlo porque había algunos paquetes rotos y problemas / conflictos de dependencia.

Al final tuve que reinstalar mysql

sudo apt-get remove mysql-client
sudo apt-get install mysql-server


2

Mi solución;

Ubuntu 18.04 (WSL)

/etc/mysql/my.cnf

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

/etc/mysql/mysql.conf.d/mysqld.cnf

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

Cambié el puerto. Me ha funcionado. Puedes escribir otro puerto. Ejemplo 3355


2

¿Por qué obtener este error?

Recibí nuevas actualizaciones de las bibliotecas mysql, así que actualicé mi sistema operativo Kubuntu después de recibir estos errores.


Comandos que probé y cómo lo arreglé.

MySql-server se ejecuta correctamente pero cuando intenté conectarlo

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'.

Revisé /var/run/mysqld/mysqld.sock'.este directorio. Mis archivos no existían.

También probé estos comandos para conectarme, pero no funcionó para mí.

 mysql -h 127.0.0.1 -P 3306 -u root -p

 sudo service mysql start

Después de perder alrededor de 2 horas encontré la solución

sudo apt-get clean
sudo apt-get update
sudo apt-get upgrade -f

Después de eso todo se arregló para mí.


Esto me ayudó a solucionar el problema. No entiendo cómo se relaciona con el problema de
calcetines que

1

Cambiar el hosta 127.0.0.1funcionó para mí.

Edite el archivo /etc/mysql/my.cnfy agregue la línea mencionada a continuación a la sección:client

[client]
port  = 3306
host  = 127.0.0.1
socket  = /var/lib/mysql/mysql.sock

Después de que hayas terminado con eso. Ejecute el siguiente comando.

sudo service mysql start

Este, mi amigo, me ayudó :)
Bhargav Nanekalva

@NBhargav, estoy tan feliz de que pudieras resolver tu problema ... Saludos, amigo ... 😇😇
Dulith De Costa

1

También verificaría la configuración de mysql. Estaba teniendo este problema con mi propio servidor, pero estaba demasiado apresurado y configuré mal el innodb_buffer_pool_size para mi máquina.

innodb_buffer_pool_size = 4096M

Por lo general, funciona bien hasta 2048, pero supongo que no tengo la memoria necesaria para admitir 4 conciertos.

Me imagino que esto también podría suceder con otras opciones de configuración de mysql.


1

Tuve un problema similar en un CentOS VPS. Si MySQL no se inicia o sigue fallando justo después de comenzar, intente estos pasos:

1) Busque el archivo my.cnf (el mío estaba ubicado en /etc/my.cnf) y agregue la línea:

innodb_force_recovery = X

reemplazando X con un número del 1 al 6, comenzando desde 1 y luego aumentando si MySQL no se inicia. Establecer 4, 5 o 6 puede eliminar sus datos, así que tenga cuidado y lea http://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html antes.

2) Reinicie el servicio MySQL. Solo se ejecutará SELECT y eso es normal en este punto.

3) Volcar todas sus bases de datos / esquemas con mysqldump uno por uno, no comprima los volcados porque de todos modos tendría que descomprimirlos más tarde.

4) Mueva (o elimine) solo los directorios de bd dentro de / var / lib / mysql, conservando los archivos individuales en la raíz.

5) Detenga MySQL y luego descomente la línea agregada en 1). Inicia MySQL.

6) Recupera todos los bd en 3).

¡Buena suerte!


1

Pruebe lo siguiente en un indicador de terminal:

sudo mysql

Una vez que eso le permita ingresar, puede crear un nuevo usuario y otorgarle los privilegios que desee en la base de datos específica a la que necesita acceso.

Mysql 5.7 cambió algunas cosas y, de forma predeterminada, utiliza el complemento auth_socket (a diferencia de mysql_native_password) para que la raíz proteja la cuenta de ser pirateada. Puede anular esto configurando el campo del complemento para root, pero a menos que tenga una muy buena razón, probablemente no debería eludir la protección. Especialmente cuando sudo mysqles más fácil que de mysql -u root -ptodos modos.

Descubrí esta información, de todos los lugares, de un sitio de ayuda de Raspberry Pi . Funcionó de maravilla después de que Lubuntu 18.04 me molestó muchísimo durante un par de horas.


1

Primero crea dir / var / run / mysqld

con comando:

mkdir -p /var/run/mysqld

luego agregue derechos al directorio

chown mysql:mysql /var/run/mysqld

después de este intento

mysql -u root

1

Tuve exactamente el mismo problema. Después de luchar durante una hora, encontré una forma de corregirlo sin reinstalar mysql-common, mysql-client, mysql-server.

En primer lugar, vaya a "/ var / run / mysqld". Encontrará que mysql.sock no existe. Simplemente elimine todo el directorio mysqld y vuelva a crearlo y bríndele los privilegios necesarios.

# rm -rf /var/run/mysqld && mkdir /var/run/mysqld && chown mysql /var/run/mysqld/

Ahora, mata el proceso mysql en su totalidad. Es posible que le muestre "esperando el limpiador de página" al ejecutar el comando "/etc/init.d/mysql status" incluso después de cerrar el servicio.

Para cerrar completamente el servicio, use

# pkill -9 mysqld

Una vez que finalice el proceso, intente iniciarlo nuevamente usando

# /etc/init.d/mysql start

¡Y verás que funciona bien! Y tampoco habrá problemas para detenerlo también.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.