FEHLER 2002 (HY000): Es kann keine Verbindung zum lokalen MySQL-Server über den Socket '/var/run/mysqld/mysqld.sock' (2) hergestellt werden.


441

Ich habe LAMP unter Ubuntu 12.04 LTS (Precise Pangolin) installiert und dann das Root-Passwort auf phpMyAdmin festgelegt . Ich habe das Passwort vergessen und kann mich jetzt nicht anmelden. Wenn ich versuche, das Passwort über das Terminal zu ändern, erhalte ich:

FEHLER 2002 (HY000): Es kann keine Verbindung zum lokalen MySQL-Server über den Socket '/var/run/mysqld/mysqld.sock' (2) hergestellt werden.

Wie kann ich das beheben? Ich kann LAMP nicht öffnen, deinstallieren oder neu installieren.


Wahrscheinlich ist die Neuinstallation einfacher: stackoverflow.com/a/31984482/763744
Zernel

Setzen Sie das Passwort zurück, indem Sie MySQL stoppen und im abgesicherten Modus starten. Überspringen Sie die --grant tables
davejal


Starten Sie den MySQL-Dienst oder starten Sie ihn neu und überprüfen Sie ihn. sudo /etc/init.d/mysql starten oder sudo /etc/init.d/mysql neu starten
Jitendra Patel

systemctl start mariadb.service
Thewebus

Antworten:


253

Ich hatte dieses Problem einmal und löste es durch Installation mysql-server. Stellen Sie also sicher, dass Sie das installiert haben mysql-server, nicht das mysql-clientoder etwas anderes.

Dieser Fehler bedeutet, dass die Datei /var/run/mysqld/mysqld.socknicht vorhanden ist. Wenn Sie sie nicht installiert haben mysql-server, ist sie nicht vorhanden. Installieren Sie es in diesem Fall mit

sudo apt-get install mysql-server

Wenn das mysql-serverjedoch bereits installiert ist und ausgeführt wird, müssen Sie die Konfigurationsdateien überprüfen.

Die Konfigurationsdateien sind:

/etc/my.cnf
/etc/mysql/my.cnf
/var/lib/mysql/my.cnf

In /etc/my.cnfkann die Socket-Datei-Konfiguration sein /tmp/mysql.sockund in /etc/mysql/my.cnfder Socket-Datei-Konfiguration kann sein /var/run/mysqld/mysqld.sock. Also, entfernen oder umbenennen /etc/mysql/my.cnf, MySQL verwenden lassen /etc/my.cnf, dann kann das Problem gelöst werden.


Sie können den MySQL-Daemon ausführen und den MySQL-Server-Core installieren, aber Sie müssen den MySQL-Server installieren, bei dem es sich um die Binärdateien UND das Systemdatenbank-Setup handelt!
Cedric

99
sudo apt-get install mysql-server
MySQL

9
Wenn ich technisch erklären müsste, würde ich sagen 1) Wenn Sie "mysql -u <Benutzername> -h <MySQL_Server_Adresse> -p" ausführen, führen Sie tatsächlich den mysql-Client aus, um auf den mysql-Server zuzugreifen. Wenn auf der mit '-h' angegebenen Adresse / IP-Adresse kein MySQL-Server installiert ist, wird der obige Fehler angezeigt. Dies liegt daran, dass keine Verbindung zum MySQL-Server über den Socket mysql.sock hergestellt werden kann. 2) Wenn der MySQL-Server bereits installiert ist, sollte er ausgeführt werden. Ist dies nicht der Fall, wird der gleiche Fehler festgestellt. Lassen Sie es also auf dem von Ihnen angegebenen Server laufen.
Mayur Nagekar

1
Dies kann auch auftreten, wenn Sie versuchen, das Verzeichnis zu ändern, in dem die Datenbank gespeichert ist, aber das falsche Verzeichnis in die Konfigurationsdatei eingeben (wie ein Tippfehler). Anstatt Ihnen mitzuteilen, dass das Tippfehlerverzeichnis nicht vorhanden ist, wird Ihnen mitgeteilt, dass Sie keine Berechtigung zum Zugriff haben.
Michael

4
Als ersten Schritt würde ich einen Versuch empfehlen, den Serverprozess neu zu starten (siehe die Unterschiede zwischen Server und Client anderer). Versuchen Sie sudo /etc/init.d/mysql neu zu starten. Normalerweise ist eine Neuinstallation nicht erforderlich. Ich würde Ihnen empfehlen, zuerst die Protokolldateien zu überprüfen. Nicht nur die Protokolldatei von mysql, sondern auch / var / log / syslog, da Sie möglicherweise einen Serverabsturz hatten, der dazu führte, dass mysql als Nebeneffekt ausfiel.
Rein

212

Versuche dies:

mysql -h 127.0.0.1 -P 3306 -u root -p <database>

Auch (um zu sehen, ob es läuft):

telnet 127.0.0.1 3306 

Wahrscheinlich handelt es sich nur um eine Fehlkonfiguration in der my.cnfDatei /etc/somewhere(abhängig von der Linux-Distribution ).


1
Ich erhalte den gleichen Fehler. Und ich habe überprüft und die Standardbindung sowohl in der Haupt- als auch in der my.cnf ist bereits auf 127.0.0.1 eingestellt. Mit Ihrem obigen Befehl konnte ich jedoch eine Verbindung herstellen. Muss weiter jagen, um zu sehen, warum nur "MySQL" den Fehler verursacht.
Cchiera

1
Ich erhalte Telnet: Verbindung zum Remote-Host kann nicht hergestellt werden: Die Verbindung wurde aufgrund eines Telnet-Befehls abgelehnt. Allerdings läuft Apache immer noch, da ich localhost öffnen kann
Rishi Dua

@cchiera Weißt du, ich hatte diesen Fehler vorher nicht. Aber als ich über eine iOS-App mithilfe des SSH-Tunnels eine Verbindung zu meiner Datenbank herstellen wollte, wurde 2013 der Fehler angezeigt. Um es zu lösen, musste ich Referenz 1 Referenz 2 bearbeiten /etc/my.cnfund kommentieren . Dann könnte ich mich verbinden. Danach wurde mir klar, dass ich jetzt diesen Fehler von 2002 bekam, der mich zu dieser Antwort führte, und jetzt funktioniert er wieder. Auf jeden Fall stimme ich Ihnen zu, indem ich eine Erklärung erhalte, warum das Tippen ohne Fehler einen Fehler auslöst . #bind-address = 127.0.0.1 mysql-h
Pathros

Hinweis: mysql -h localhostfunktioniert nicht. Stellen Sie sicher, dass Sie die Angaben mysql -h 127.0.0.1in der Antwort verwenden.
Vadasambar

Wie kann ich das lösen, wenn ich mich mit dem Befehl in dieser Antwort anmelden kann?
Carlos A. Jimenez Holmquist

128

Ich sehe alle diese Antworten, aber keine bietet die Möglichkeit, das Passwort zurückzusetzen, und keine akzeptierte Antwort . Die eigentliche Frage ist, dass er sein Passwort vergessen hat , also muss er zurücksetzen, nicht sehen, ob es läuft oder nicht (installiert oder nicht), wie die meisten dieser Antworten implizieren.


So setzen Sie das Passwort zurück

Befolgen Sie diese Schritte (kann hilfreich sein, wenn Sie Ihr Passwort wirklich vergessen und es jederzeit versuchen können, auch wenn Sie sich gerade nicht in der Situation befinden):

  1. Halt mysql

    sudo /etc/init.d/mysql stop

    Oder für andere Distributionsversionen:

    sudo /etc/init.d/mysqld stop
  2. Starten Sie MySQL im abgesicherten Modus

    sudo mysqld_safe --skip-grant-tables &
  3. Melden Sie sich mit root bei MySQL an

    mysql -uroot
  4. Wählen Sie die zu verwendende MySQL-Datenbank aus

    use mysql;
  5. Setzen Sie das Passwort zurück

    -- MySQL version < 5.7
    update user set password=PASSWORD("mynewpassword") where User='root';
    
    -- MySQL 5.7, mysql.user table "password" field -> "authentication_string"
    
    update user set authentication_string=password('mynewpassword') where user='root';
  6. Spülen Sie die Privilegien

    flush privileges;
  7. Starten Sie den Server neu

    quit
  8. Stoppen Sie den Server und starten Sie ihn erneut

    Ubuntu und Debian:

    sudo /etc/init.d/mysql stop
    ...
    sudo /etc/init.d/mysql start

    Auf CentOS, Fedora und RHEL:

    sudo /etc/init.d/mysqld stop
    ...
    sudo /etc/init.d/mysqld start
  9. Melden Sie sich mit einem neuen Passwort an

    mysql -u root -p
  10. Geben Sie das neue Passwort ein und genießen Sie Ihren Server erneut, als wäre nichts passiert

Dies wurde aus dem Zurücksetzen eines MySQL-Root-Passworts übernommen .


Das Aktualisieren des Benutzerkennworts hat bei mir nicht funktioniert. Nachdem ich mich jedoch am MySQL-Monitor angemeldet und die MySQL-Datenbank verwendet hatte, konnte repair table user use_frmich dieses Problem lösen. - stackoverflow.com/questions/4297592/…
Craig van Tonder

20
In MySQL 5.7 wurde das Kennwortfeld im Tabellenfeld mysql.user entfernt. Jetzt lautet der Feldname 'authentication_string', daher sollte (5)update user set authentication_string=password('mynewpassword') where user='root';
Daniel

Würdest du einen Weg kennen, dies zu einem Bash-Skript zu machen? Ich brauche es anscheinend jedes Mal, wenn ich die Box neu starte.
Vphilipnyc

Etwas sagt mir, dass Sie eine Problemumgehung wünschen, aber Sie sollten tatsächlich versuchen, herauszufinden, warum Sie dies jedes Mal tun müssen, und das beheben. Was das Skript
betrifft,

2
Dies funktionierte gut für mich, aber ich musste zuerst diese Lösung implementieren: stackoverflow.com/questions/42153059/…
Andrew Fox

68

Ich habe folgende Schritte versucht:

  1. Anmelden als super useroder verwendensudo
  2. /etc/mysql/my.cnfMit gedit öffnen
  3. Suchen Sie bind-addressden Wert und ändern Sie ihn in die IP-Adresse des Datenbankserver-Hostcomputers. Für mich war es localhostoder127.0.0.1
  4. Speichern und schließen Sie die Datei.
  5. Komm zurück zum Terminal und führe aus sudo service mysql start

Und es hat bei mir funktioniert.


4
Von diesem habe ich gerade sudo service mysql restart ausgeführt und es hat funktioniert.
Orane

In meinem Fall war der Fehler, dass die IP geändert wurde, also habe ich bind-address = localhost
Nicolás Arias

@rshahriar gibt es nichts als Bindungsadresse in meiner /etc/my.cnf genannt ist es eine gute Idee, das Feld hinzuzufügen
RCBian

@SilvioDelgado Nicht, wenn Sie jemals eine Verbindung über SSH-Tunneling herstellen möchten. Erklärung hier
Pathros

Der Neustart des MySQL-Dienstes funktionierte auch für mich, aber ich bin mir immer noch nicht sicher, wo ich das Fehlerprotokoll finden kann, um die Ursache herauszufinden und zu verhindern, dass es erneut
auftritt

41

Ich habe dieses Problem behoben, indem ich den folgenden Befehl ausgeführt habe:

mysql.server start

Und wenn Sie auf einem Mac sind und Brew zur Installation von MySQL verwendet haben, verwenden Sie einfach:

brew services start mysql

35

Ich hatte ein ähnliches Problem. MySQL würde nicht starten:

sudo service mysql start
start: Job failed to start

Wenn ich Apparmor deaktiviert habe:

sudo aa-complain /etc/apparmor.d/*

Das Problem ging weg. Das Problem war, dass mysqld versuchte, auf /run/mysqld/mysqld.sock zuzugreifen, aber das Apparmor-Profil gab nur /var/run/mysqld/mysqld.sock die Berechtigung (/ var / run ist mit / run verknüpft, also sind dies tatsächlich das Gleiche). Sie sind sich nicht sicher, warum mysqld den var-Pfad nicht verwendet, da dies in allen Konfigurationsdateien festgelegt ist. Sie können das Problem jedoch beheben, indem Sie Folgendes zu /etc/apparmor.d/usr.sbin.mysqld hinzufügen

/run/mysqld/mysqld.pid rw,
/run/mysqld/mysqld.sock rw,

Ich wusste nicht, dass ich "sudo service mysql start" anrufen musste. Als ich MySQL das letzte Mal unter Ubuntu installiert habe, wurde es bei der Installation automatisch gestartet. Für MariaDB auf Manjaro muss der Dienst nach der Installation explizit gestartet werden.
dmiller309

31

In meinem Fall war die Festplatte voll und mysqld konnte nicht mehr gestartet werden.

Versuchen Sie, den MySQL-Dienst neu zu starten.

> service mysql restart

oder

> service mysql stop

> service mysql start

Wenn der stopBefehl nicht erkannt wird, ist dies definitiv der Speicherplatz. Sie sollten dafür sorgen, dass Speicherplatz in der Partition mysqlzugewiesen wird, oder die Festplatte vergrößern.

Überprüfen Sie den Speicherplatz mit

> df -h

2
Das gleiche ist mir passiert - volle Festplatte. Einige Speicherplätze wurden aufgeräumt, neu gestartet und das Problem wurde behoben.
Darren

2
Wenn dies Ihr Problem bei der Ausführung ist: "/etc/init.d/mysqld start" teilt Ihnen mit, dass Ihre Festplattenpartition voll ist
Tickon

Das gleiche gilt für mich, Festplatte 100%. Gereinigter Raum und Service starten ok
Hugo

28

Ich habe das gelöst, indem ich den mysqlProzess beendet habe:

ps -ef | grep mysql
kill [the id]

Und dann habe ich den Server erneut gestartet mit:

sudo /etc/init.d/mysql restart

Funktioniert aber startauch:

sudo /etc/init.d/mysql start

Dann habe ich mich als angemeldet adminund war fertig.


Nun, ich habe MySQL tatsächlich abgebrochen, bevor es abstürzt. Dann bekomme ich "* Bitte schauen Sie sich das Syslog an." und "FEHLER 2002 (HY000): Verbindung zum lokalen MySQL-Server über Socket '/var/run/mysqld/mysqld.sock' (111) nicht möglich". Schließlich merke ich, dass es versucht, sich selbst wiederherzustellen, also töte ich es und starte es neu.
cwhsu

Es gibt (seltene) Situationen, in denen "mysql start" fehlschlägt, daher müssen Sie das Argument "restart" verwenden. Wenn Sie einen Daemon-Prozess beenden müssen, ist es besser, das Argument "stop" anstelle des Befehls kill zu verwenden. Der Befehl killall ist jedoch bequemer als der Befehl kill (killall mysqld).
Rein

Den MySQL-Prozess zu beenden und dann MySQL neu zu starten, hat für mich funktioniert, nett
Vishal Shetty

21

Irgendwie hat der MySQL-Serverprozess den Socket nicht erstellt, oder der Client sucht den Socket an der falschen Stelle.

Mein erster Vorschlag wäre zu überprüfen, ob der MySQL-Server läuft. Der zweite Vorschlag könnte sein, läuft der MySQL-Server auf einem anderen Host? Wenn ja, fügen Sie das -h <hostname>Flag Ihrem MySQL-Client im Terminal hinzu.

Wenn MySQL tatsächlich ausgeführt wird und lokal ausgeführt wird, überprüfen Sie Ihre my.cnfDatei. Es sollte eine Linie wie geben

socket = /var/run/mysqld/mysqld.sock

Überprüfen Sie, ob dies mit dem Socket-Speicherort übereinstimmt, den Sie in Ihrem Beitrag erwähnt haben.

Aus Erfahrung würde ich sagen, dass das wahrscheinlichste Szenario darin besteht, dass Ihr MySQL-Server entweder überhaupt nicht oder nicht auf demselben Host ausgeführt wird, auf dem Sie Ihren MySQL-Client vom Terminal aus ausführen.


19

Ich hatte gerade das gleiche Problem, nachdem ich meinen Produktionsserver neu starten musste. Ich verwende Debian 8.1 (Jessie) auf einem DigitalOcean-Droplet.

Folgendes habe ich getan, um mein Problem zu beheben:

  1. Überprüfen Sie, ob die Datei /var/run/mysqld/mysqld.sockvorhanden ist. Wenn dies nicht der Fall ist, erstellen Sie es manuell durch Eingabe touch /var/run/mysqld/mysqld.sock(was ich tun musste).

  2. Der MySQL-Prozess kann diese Datei also verwenden. Ändern Sie den Besitz dieser Datei durch Eingabe chown mysql /var/run/mysqld/mysqld.sock.

  3. Starten Sie nach Abschluss von '2' den MySQL-Dienst neu, indem Sie service mysql restartoder eingeben /etc/init.d/mysql restart.

Nachdem ich die obigen Schritte durchlaufen hatte, wurde mein Problem behoben. Ich habe dieses Problem selten und es gibt wahrscheinlich einen besseren Weg, also geben Sie auf jeden Fall konstruktives Feedback, wenn nötig :).


1
Ich bemerkte, dass die Datei nicht vorhanden war und startete einfach den MySQL-Server neu. Die Datei wurde automatisch erstellt und einwandfrei gestartet. Danke für die Führung.
Sojurn

15

Ihr MySQL-Server läuft möglicherweise nicht. Stellen Sie sicher, dass es ausgeführt wird, indem Sie mysql.server startin das Terminal eingeben .


15

Überprüfen Sie den "bind-adress"Parameter in my.cnf.

Andernfalls versuchen Sie es mit dem Befehl:

mysql -h 127.0.0.1 -P 3306 -u root -p
  • -h für Host 127.0.0.1, dh localhost

  • -P (Hinweis -P als Großbuchstaben) für Port 3306, dh den Standardport für MySQL


11

Folgendes hat bei mir funktioniert:

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

Dadurch wird eine Verknüpfung erstellt.


Hat bei mir nicht funktioniert :( Dadurch entsteht ein Symlink zwischen den beiden Ordnern askubuntu.com/a/56340/242873
Michael

11

Wenn Sie Amazon EC2 verwenden und dieses Problem in der Instanz auftritt , müssen Sie nur Folgendes tun:

sudo yum install mysql-server
sudo service mysqld restart

In Amazon EC2 ist kein Server installiert (nur der Client ist installiert). In diesem Fall müssen Sie diesen auf Ihrer Instanz installieren und danach versuchen

 mysql -u root -p

um zu überprüfen, ob das funktioniert hat.


Neustart von mysqld.service fehlgeschlagen: Einheit mysqld.service nicht gefunden. In Ubuntu 16.04
Ketav Chotaliya

9

Ich denke, wann immer Sie den Fehler bekommen

FEHLER 2002 (HY000): Über den Socket '/var/lib/mysql/mysql.sock' kann keine Verbindung zum lokalen MySQL-Server hergestellt werden.

Ich werde empfehlen, zuerst zu überprüfen, ob Ihr mysqlDaemon ausgeführt wird ... Meistens wird er nicht standardmäßig ausgeführt. Sie können es überprüfen durch /etc/init.d/mysqld status.

Wenn es nicht läuft, starten Sie es zuerst:

.../etc/init.d/mysqld start.

Ich wette, es wird 110% funktionieren.


9

Anstatt localhost zu verwenden:

mysql -u myuser -pmypassword -h localhost mydatabase

Verwenden Sie 127.0.0.1

mysql -u myuser -pmypassword -h 127.0.0.1 mydatabase

(Beachten Sie auch, dass zwischen -p und mypassword kein Leerzeichen steht.)

Genießen :)


Sie können Ihr Kennwort aus Sicherheitsgründen auch nicht über die Befehlszeile eingeben, indem Sie folgende Zeile verwenden: mysql -u myuser -p -h 127.0.0.1 mydatabase MySQL fragt Sie nach Ihrem Kennwort und gibt es nicht wieder.
DDay

1
Das hat es für mich gelöst. Ich frage mich jedoch immer noch, warum das 127.0.0.1funktioniert, während localhostes nicht funktioniert?!
not2savvy

9

Stellen Sie sicher, dass Sie Backups wichtiger Datenbanken haben, und deinstallieren Sie dann MySQL- bezogene Inhalte:

apt-get remove --purge mysql\*

Dann installieren Sie es erneut :

apt-get install mysql-server mysql-client

Dies funktionierte für mich und die Daten wurden aufbewahrt.

Wenn PHP MySQL Fehler anzeigt, müssen Sie PHP MySQL möglicherweise neu installieren :

apt-get install php5-fpm php5-mysql

Ich denke, das ist die tödliche Waffe. Ich habe alles versucht, aber nur Ihr Vorschlag hat mir geholfen. Vielen Dank !
Messou

9

Ich habe auch das gleiche Problem, es wird auftreten, wenn Ihr mysql servernicht standardmäßig ausgeführt wird. Es wird nach einigen Sekunden wieder gestoppt, so dass Sie erneut den $ sudo service mysql start Befehl ( ) ausführen, den Sie ändern können, wenn Sie wissen.

Verwenden Sie dazu den Befehl

$ sudo service mysql start   

(Geben Sie bei Bedarf ein Benutzerpasswort ein, da wir es verwenden sudo) und führen Sie es dann aus

$ sudo mysql -u root -p          (put user password if required )

Jetzt hast du deine Datenbank


7

Wenn Ihre Installation kürzlich durchgeführt wurde, sollten Sie bestätigen, ob es sich bei Ihrer Installation um den Installationsserver handelt ... als MySQL-Server-5.5. Möglicherweise haben Sie nur "MySQL" installiert. Dies ist nur der Client anstelle des Servers.


7

Wenn Sie XAMPP auf Ihrem Linux-Computer installiert haben , versuchen Sie, Ihre my.cnfDatei von /opt/lampp/etc/my.cnfnach zu kopieren /etc/my.cnf.

Führen Sie dann das mysql -u rooterneut aus ... Sie sollten jetzt den richtigen Socket haben und den MySQL-Client ausführen können.


7

Ich habe auch dieses Problem, aber ich habe es gerade getan:

sudo service mysql restart 

Es hat bei mir funktioniert.


7

Ich habe die Lösung gefunden

Vor dem Auslösen des Befehls:mysql_secure_installation

  • Schritt 1: sudo systemctl stop mariadb
  • Schritt 2: sudo systemctl start mariadb
  • Schritt 3: mysql_secure_installation

Dann werden Sie nach dem Root-Passwort gefragt und Sie können einfach die Eingabetaste drücken und Ihr neues Root-Passwort festlegen.


6

In meinem Fall wurde der Standardport 3306 von einem anderen Prozess verwendet und daher nicht gestartet. Nachdem ich den anderen Dienst gestoppt und getan hatte sudo service mysql start, funktionierte es gut. Übrigens können Sie so etwas wie sudo lsof -Pn -iTCP:3306sehen, wer möglicherweise den Port verwendet.


6

In meinem Fall hat es durch F & E funktioniert:

Ich kann eine Verbindung zu MySQL herstellen

root-debian#mysql -h 127.0.0.1 -u root -p

Aber es funktioniert nicht mit mysql -u root -p .

Ich habe keine bind-addressin my.cnf gefunden . Also habe ich den Parameter socket=/var/lib/mysql/mysqld.sockin überkommentiertmy.cnf dem ich ein Problem mit der Anmeldung hatte, .

Nach dem Neustart des Dienstes ging es gut:

root@debian:~# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.6.19 MySQL Community Server (GPL)

6

Ich habe dieses Problem mit Neustart von MySQL gelöst

/etc/init.d/mysql stop

und

/etc/init.d/mysql start

das ist es.


5

Aus Erfahrung sage ich, dass Sie zuerst überprüfen müssen, ob der Server ausgeführt wird, und dann versuchen müssen, MySQL zu konfigurieren. Die letzte Lösung besteht darin, MySQL neu zu installieren.


5

Öffnen Sie das Terminal und geben Sie Folgendes ein:

sudo apt-get purge mysql-client-core-5.6

sudo apt-get autoremove

sudo apt-get autoclean

sudo apt-get install mysql-client-core-5.5

sudo apt-get install mysql-server  

Sowohl der MySQL-Datenbankkernclient als auch die MySQL Server-Pakete haben dieselbe Version 5.5. MySQL Client 5.5 und MySQL Server 5.5 sind die aktuellen "besten" Versionen dieser Pakete in Ubuntu 14.04, wie von den Paketbetreuern festgelegt.

Wenn Sie lieber MySQL Client 5.6 und MySQL Server 5.6 installieren möchten, finden Sie die Pakete mysql-client-core-5.6 und mysql-server-5.6 auch im Ubuntu Software Center. Wichtig ist, dass die Client- und Server-Versionsnummern in beiden Fällen übereinstimmen.

Das hat bei mir funktioniert.


5

Überprüfen Sie, ob Sie die richtigen Rechte haben:

sudo chmod 755 /var/lib/mysql/mysql

Ich hatte die gleichen Probleme und das hat bei mir funktioniert. Danach konnte ich MySQL starten.


5

In meinem Fall scheint es mir nicht möglich zu sein, den MySQL-Prozess zu beenden, wenn ich ausgeführt werde

sudo service mysql stop
ps -ef | grep mysql

Der MySQL-Prozess war immer da, es sieht so aus, als würde er die Socket-Datei blockieren und der neue MySQL-Prozess konnte ihn nicht selbst erstellen.

das hat also geholfen

cd /var/run
sudo cp mysqld/ mysqld.bc -rf
sudo chown mysql:mysql mysqld.bc/
sudo service mysql stop
sudo cp mysqld.bc/ mysqld -rf
sudo chown mysql:mysql mysqld -R
sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &

Jetzt kann ich mich mit der Datenbank anmelden

mysql -u root

So aktualisieren Sie das Root-Passwort:

UPDATE user SET authentication_string=password('YOURPASSWORDHERE') WHERE user='root';
FLUSH PRIVILEGES;

PS : Ich hatte Probleme beim Aktualisieren des Root-Passwods. Es scheint ein Problem mit dem Plugin "auth_socket" zu sein, daher musste ich einen neuen Benutzer mit vollen Berechtigungen erstellen

insert into user set `Host` = "localhost", `User` = "super", `plugin` = "mysql_native_password", `authentication_string` = NULL, `password_expired` = "N", `password_lifetime` = NULL, `account_locked` = "N", `Select_priv` = "Y",
`Insert_priv` = "Y", `Update_priv` = "Y", `Delete_priv` = "Y", `Create_priv` = "Y", `Drop_priv` = "Y", `Reload_priv` = "Y", `Shutdown_priv` = "Y", `Process_priv` = "Y", `File_priv` = "Y",
`Grant_priv` = "Y",  `References_priv` = "Y", `Index_priv` = "Y", `Alter_priv` = "Y", `Show_db_priv` = "Y", `Super_priv` = "Y", `Create_tmp_table_priv` = "Y", `Lock_tables_priv` = "Y",
`Execute_priv` = "Y", `Repl_slave_priv` = "Y",  `Repl_client_priv` = "Y",  `Create_view_priv` = "Y", `Show_view_priv` = "Y", `Create_routine_priv` = "Y", `Alter_routine_priv` = "Y",
`Create_user_priv` = "Y",  `Event_priv` = "Y", `Trigger_priv` = "Y", `Create_tablespace_priv` = "Y";

Dadurch wird der Benutzer "super" ohne Passwort erstellt und Sie können sich mit verbinden mysql -u super


Vielen Dank für die Antwort und ich kann mich bei MySQL anmelden, aber es gibt keine Benutzertabelle in meinen Datenbanken.
John Joe

Diese Lösung funktioniert. Bevor Sie jedoch die SQL-Anweisung ausführen, um das Kennwort für root zu ändern, müssen Sie eine Datenbank auswählen. Führen Sie die folgende Anweisung aus <br> use mysql;<br> und die Sie jetzt verwenden können <br>UPDATE user SET authentication_string=password('YOURPASSWORDHERE') WHERE user='root'; FLUSH PRIVILEGES;
Charle K.

5

Auf dem Debian-Server Jessie bestand meine Arbeitslösung darin, einfach zu arbeiten

service mysql restart
service mysql reload

als Root-Benutzer

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.