El directorio mysqld_safe '/ var / run / mysqld' para el archivo de socket UNIX no existe

188

Al iniciar mysql server 5.7.17 usando mysqld_safe, se produce el siguiente error.

2017-02-10T17:05:44.870970Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2017-02-10T17:05:44.872874Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2017-02-10T17:05:44.874547Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.

Como arreglarlo ?

Rajadip
fuente

Respuestas:

507

Parece extraño que este directorio no se haya creado en la instalación: ¿ha cambiado manualmente la ruta del archivo de socket en my.cfg?

¿Ha intentado simplemente crear este directorio usted mismo y reiniciar el servicio?

mkdir -p /var/run/mysqld
chown mysql:mysql /var/run/mysqld
Matt Clark
fuente
2
No, no he hecho ningún cambio manualmente. Intentaré esto creando un directorio. Gracias por las sugerencias
Rajadip
14
Sucede en mysql 5.7. Cuando detiene el servicio mysql / var / run / mysqld se elimina y se vuelve a crear cuando inicia de nuevo el servicio.
Capy
2
Tuve que usar sudo para ambos
Kasun Rajapaksha el
1
@Capy - upvoted - @Matt Clark - edita amablemente su respuesta para incluir la información de que a pesar de que el DIR podría haber sido creado pero se eliminará si ejecutamos - $ sudo /etc/init.d/mysql stop, gracias
Rohit Dhankar
si sigue obteniendo el mismo error siguiendo estos pasos ¡NOTA que sudoresolverá esto ya que este directorio se elimina una vez que mysqlse detiene y sin sudoél no tendrá acceso a estas carpetas!
Jadeye
72

Cuando utilicé el código mysqld_safe --skip-grant-tables &pero recibí el error:

mysqld_safe El directorio '/ var / run / mysqld' para el archivo de socket UNIX no existe.

$ systemctl stop  mysql.service
$ ps -eaf|grep mysql
$ mysqld_safe --skip-grant-tables &

Lo resolví:

$ mkdir -p /var/run/mysqld
$ chown mysql:mysql /var/run/mysqld

Ahora uso el mismo código mysqld_safe --skip-grant-tables &y obtengo

mysqld_safe Inicio del demonio mysqld con bases de datos desde / var / lib / mysql

Si lo uso $ mysql -u rootobtendré:

Versión del servidor: 5.7.18-0ubuntu0.16.04.1 (Ubuntu)

Copyright (c) 2000, 2017, Oracle y / o sus filiales. Todos los derechos reservados.

Oracle es una marca registrada de Oracle Corporation y / o sus filiales. Otros nombres pueden ser marcas registradas de sus respectivos propietarios.

Escriba "ayuda"; o '\ h' para obtener ayuda. Escriba '\ c' para borrar la declaración de entrada actual.

mysql>

Ahora es el momento de cambiar la contraseña:

mysql> use mysql
mysql> describe user;

Lectura de información de la tabla para completar los nombres de tabla y columna Puede desactivar esta función para obtener un inicio más rápido con -A

Base de datos cambiada

mysql> FLUSH PRIVILEGES;
mysql> SET PASSWORD FOR root@'localhost' = PASSWORD('newpwd');

o Si tiene una cuenta raíz mysql que se puede conectar desde cualquier lugar, también debe hacer lo siguiente:

UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';

Metodo alternativo:

   USE mysql
   UPDATE user SET Password = PASSWORD('newpwd')
   WHERE Host = 'localhost' AND User = 'root';

Y si tiene una cuenta raíz a la que puede acceder desde cualquier lugar:

 USE mysql
 UPDATE user SET Password = PASSWORD('newpwd')
 WHERE Host = '%' AND User = 'root';`enter code here

ahora necesita quitdesde mysql y detener / iniciar

FLUSH PRIVILEGES;
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start

ahora nuevamente 'mysql -u root -p' y use la nueva contraseña para obtener

mysql>

Partha Sen
fuente
9
desde MySQL 5.7.6, la columna Contraseña pasó a llamarse "autenticación_cadena". Aquí puede leer más al respecto: bugs.mysql.com/bug.php?id=76655
IberoMedia
6

Trabaja para mí en CentOS:

$ service mysql stop
$ mysqld --skip-grant-tables &
$ mysql -u root mysql

mysql> FLUSH PRIVILEGES;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

$ service mysql restart
Heli Perez
fuente
0

Puede intentar lo siguiente si su base de datos no tiene ningún dato O si tiene otro ausente para restaurar esos datos. Deberá conocer la contraseña raíz del servidor Ubuntu pero no la contraseña raíz mysql.

Es muy probable que muchos de nosotros hayamos instalado "mysql_secure_installation" ya que esta es una práctica recomendada. Navegue al directorio bin donde existe mysql_secure_installation. Se puede encontrar en el directorio / bin en los sistemas Ubuntu. Al volver a ejecutar el instalador, se le preguntará si debe cambiar la contraseña de la base de datos raíz.

David Baldwin
fuente
Pero, creo que esto es para usar solo un servidor MySQL seguro. ¿No es así? No hace diferencia en este problema.
Rajadip
Esto no ayuda si ha olvidado la contraseña de root, ya que primero debe ingresar la contraseña actual.
Jistanidiot