web-dev-qa-db-fra.com

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

Lors du démarrage de mysql server 5.7.17 avec mysqld_safe, l'erreur suivante se produisait.

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 ?

129
Rajadip

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

Avez-vous essayé simplement 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
352
Matt Clark

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

mysqld_safe Le répertoire '/ var/run/mysqld' pour le fichier de 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 je reçois

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

Si j'utilise $ mysql -u root j'aurai:

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

Copyright (c) 2000, 2017, Oracle et/ou ses filiales. 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 'aide'; ou '\ h' pour obtenir de l'aide. Tapez '\ c' pour effacer l'instruction d'entrée actuelle.

mysql>

Il est maintenant temps de changer de 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 fonctionnalité pour 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 pouvant se connecter de partout, vous devriez aussi faire:

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

Méthode alternative:

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

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

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

maintenant besoin de quit de mysql et d’arrêter/de commencer

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>

40
Partha Sen

Travaille 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
4
Heli Perez

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

Il est fort probable que beaucoup d'entre nous ont installé "mysql_secure_installation", car il s'agit d'une pratique recommandée. Naviguez jusqu'au répertoire bin où existe mysql_secure_installation. Vous pouvez le trouver dans le répertoire/bin sur les systèmes Ubuntu. En réexécutant le programme d'installation, il vous sera demandé si vous souhaitez modifier le mot de passe de la base de données racine.

0
David Baldwin