Le répertoire mysqld_safe '/ var / run / mysqld' pour le fichier socket UNIX n'existe pas

188

Lors du démarrage du serveur mysql 5.7.17 à l'aide de mysqld_safe, l'erreur suivante se produit.

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.

Comment le réparer ?

Rajadip
la source

Réponses:

507

Il semble étrange que ce répertoire n'ait pas été créé lors de l'installation - avez-vous modifié manuellement le chemin du fichier socket dans my.cfg?

Avez-vous simplement essayé de créer vous-même ce répertoire et de redémarrer le service?

mkdir -p /var/run/mysqld
chown mysql:mysql /var/run/mysqld
Matt Clark
la source
2
Non, je n'ai effectué aucune modification manuellement. Je vais essayer cela en créant un répertoire. Merci pour vos suggestions
Rajadip
14
Cela se produit sur mysql 5.7. Lorsque vous arrêtez le service mysql / var / run / mysqld est supprimé et recréé lorsque vous redémarrez le service.
Capy
2
J'ai dû utiliser sudo pour les deux
Kasun Rajapaksha
1
@Capy - upvoted - @Matt Clark - vous aimeriez modifier votre réponse pour inclure l'information que même si le DIR a pu être créé, mais il sera supprimé si nous exécutons - $ sudo /etc/init.d/mysql stop, merci
Rohit Dhankar
si vous obtenez toujours la même erreur en suivant ces étapes REMARQUE qui sudorésoudra cela car ce répertoire est supprimé une fois mysqlest arrêté et sans sudoil n'aura pas accès à ces dossiers !!!
Jadeye
72

Quand j'ai utilisé le code mysqld_safe --skip-grant-tables &mais que j'obtiens l'erreur:

mysqld_safe Le répertoire '/ var / run / mysqld' pour le fichier socket UNIX n'existe pas.

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

J'ai résolu:

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

Maintenant, j'utilise le même code mysqld_safe --skip-grant-tables &et j'obtiens

mysqld_safe Démarrage du démon mysqld avec les bases de données de / var / lib / mysql

Si j'utilise, $ mysql -u rootj'obtiendrai:

Version du serveur: 5.7.18-0ubuntu0.16.04.1 (Ubuntu)

Copyright (c) 2000, 2017, Oracle et / ou ses affiliés. Tous les droits sont réservés.

Oracle est une marque déposée d'Oracle Corporation et / ou de ses filiales. Les autres noms peuvent être des marques de commerce de leurs propriétaires respectifs.

Tapez 'help;' ou '\ h' pour obtenir de l'aide. Tapez '\ c' pour effacer l'instruction d'entrée actuelle.

mysql>

Il est maintenant temps de changer le mot de passe:

mysql> use mysql
mysql> describe user;

Lecture des informations de table pour compléter les noms de table et de colonne Vous pouvez désactiver cette fonction pour obtenir un démarrage plus rapide avec -A

Base de données modifiée

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

ou Si vous avez un compte root mysql qui peut se connecter de partout, vous devez également faire:

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

Autre méthode:

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

Et si vous avez un compte root auquel vous pouvez accéder de partout:

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

maintenant besoin quitde mysql et arrêter / démarrer

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

maintenant à nouveau `mysql -u root -p 'et utilisez le nouveau mot de passe pour obtenir

mysql>

Partha Sen
la source
9
depuis MySQL 5.7.6, la colonne Password a été renommée "authentication_string". Ici vous pouvez en savoir plus: bugs.mysql.com/bug.php?id=76655
IberoMedia
6

Travaillez pour moi dans 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
Héli Perez
la source
0

Vous pouvez essayer ce qui suit si votre base de données ne contient aucune donnée OU si vous en avez une autre pour restaurer ces données. Vous devrez connaître le mot de passe root du serveur Ubuntu mais pas le mot de passe root mysql.

Il est fort probable que nous sommes nombreux à avoir installé "mysql_secure_installation" car c'est une bonne pratique. Accédez au répertoire bin où existe mysql_secure_installation. Il se trouve dans le répertoire / bin sur les systèmes Ubuntu. En réexécutant le programme d'installation, vous serez invité à modifier le mot de passe de la base de données racine.

David Baldwin
la source
Mais, je pense que c'est d'utiliser uniquement un serveur mysql sécurisé, n'est-ce pas? Cela ne fait aucune différence dans ce problème.
Rajadip
Cela n'aide pas si vous avez oublié le mot de passe root car vous devez d'abord saisir le mot de passe actuel.
Jistanidiot