mysqld_safe Verzeichnis '/ var / run / mysqld' für UNIX-Socket-Datei existiert nicht

186

Beim Starten von mysql server 5.7.17 mit mysqld_safe treten folgende Fehler auf.

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.

Wie man es repariert ?

Rajadip
quelle

Antworten:

499

Es scheint seltsam, dass dieses Verzeichnis bei der Installation nicht erstellt wurde. Haben Sie den Pfad der Socket-Datei in der Datei my.cfg manuell geändert?

Haben Sie versucht, dieses Verzeichnis einfach selbst zu erstellen und den Dienst neu zu starten?

mkdir -p /var/run/mysqld
chown mysql:mysql /var/run/mysqld
Matt Clark
quelle
2
Nein, ich habe keine Änderungen manuell vorgenommen. Ich werde dies versuchen, indem ich ein Verzeichnis erstelle. Vielen Dank für Vorschläge
Rajadip
14
Es passiert auf MySQL 5.7. Wenn Sie den MySQL-Dienst beenden, wird / var / run / mysqld entfernt und neu erstellt, wenn Sie den Dienst erneut starten.
Capy
2
Musste sudo für beide verwenden
Kasun Rajapaksha
1
@Capy - upvoted - @Matt Clark - Sie bearbeiten Ihre Antwort freundlicherweise so, dass sie die Information enthält, dass das DIR zwar erstellt wurde, aber gelöscht wird, wenn wir - $ sudo /etc/init.d/mysql stopdanke
Rohit Dhankar
Wenn Sie immer noch den gleichen Fehler erhalten, befolgen Sie diese Schritte. HINWEIS: Dies wird behoben, sudoda dieses Verzeichnis entfernt wird, sobald mysqles gestoppt wird und ohne sudoes keinen Zugriff auf diese Ordner hat !!!
Jadeye
71

Als ich den Code verwendet mysqld_safe --skip-grant-tables &habe, erhalte ich aber den Fehler:

mysqld_safe Verzeichnis '/ var / run / mysqld' für UNIX-Socket-Datei existiert nicht.

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

I löste:

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

Jetzt benutze ich den gleichen Code mysqld_safe --skip-grant-tables &und bekomme

mysqld_safe Starten des mysqld-Daemons mit Datenbanken aus / var / lib / mysql

Wenn ich benutze, $ mysql -u rootbekomme ich:

Serverversion: 5.7.18-0ubuntu0.16.04.1 (Ubuntu)

Copyright (c) 2000, 2017, Oracle und / oder verbundene Unternehmen. Alle Rechte vorbehalten.

Oracle ist eine eingetragene Marke der Oracle Corporation und / oder ihrer verbundenen Unternehmen. Andere Namen können Marken ihrer jeweiligen Eigentümer sein.

Geben Sie 'help' ein. oder '\ h' um Hilfe. Geben Sie '\ c' ein, um die aktuelle Eingabeanweisung zu löschen.

mysql>

Jetzt ist es Zeit, das Passwort zu ändern:

mysql> use mysql
mysql> describe user;

Lesen von Tabelleninformationen zum Vervollständigen von Tabellen- und Spaltennamen Sie können diese Funktion deaktivieren, um einen schnelleren Start mit -A zu erhalten

Datenbank geändert

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

oder Wenn Sie ein MySQL-Root-Konto haben, das von überall aus eine Verbindung herstellen kann, sollten Sie auch Folgendes tun:

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

Alternative Methode:

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

Und wenn Sie ein Root-Konto haben, auf das von überall aus zugegriffen werden kann:

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

Jetzt muss quitvon MySQL und Stop / Start

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

jetzt nochmal `mysql -u root -p 'und benutze das neue passwort um zu bekommen

mysql>

Partha Sen.
quelle
9
seit MySQL 5.7.6 wurde die Passwortspalte in "authentication_string" umbenannt. Hier können Sie mehr darüber lesen: bugs.mysql.com/bug.php?id=76655
IberoMedia
6

Arbeite für mich in 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
quelle
0

Sie können Folgendes versuchen, wenn Ihre Datenbank keine Daten enthält ODER wenn Sie eine andere haben, um diese Daten wiederherzustellen. Sie müssen das Ubuntu-Server-Root-Passwort kennen, aber nicht das MySQL-Root-Passwort.

Es ist sehr wahrscheinlich, dass viele von uns "mysql_secure_installation" installiert haben, da dies eine bewährte Methode ist. Navigieren Sie zum bin-Verzeichnis, in dem mysql_secure_installation vorhanden ist. Es befindet sich auf Ubuntu-Systemen im Verzeichnis / bin. Wenn Sie das Installationsprogramm erneut ausführen, werden Sie gefragt, ob Sie das Kennwort der Stammdatenbank ändern möchten.

David Baldwin
quelle
Aber ich denke, dies soll nur einen sicheren MySQL-Server verwenden. Bei diesem Problem macht es keinen Unterschied.
Rajadip
Dies hilft nicht, wenn Sie das Root-Passwort vergessen haben, da Sie zuerst das aktuelle Passwort eingeben müssen.
Jistanidiot