Ich habe eine Lösung!
Beim Zurücksetzen des Root-Passworts in Schritt 2) ändern Sie auch das Auth-Plugin auf mysql_native_password
:
use mysql;
update user set authentication_string=PASSWORD("") where User='root';
update user set plugin="mysql_native_password" where User='root'; # THIS LINE
flush privileges;
quit;
Dadurch konnte ich mich erfolgreich anmelden!
Vollständige Codelösung
1. Führen Sie zuerst diese Bash-Befehle
aussudo /etc/init.d/mysql stop # stop mysql service
sudo mysqld_safe --skip-grant-tables & # start mysql without password
# enter -> go
mysql -uroot # connect to mysql
2. Führen Sie dann mysql-Befehle aus => kopieren Sie dies und fügen Sie es manuell in die CLI ein
use mysql; # use mysql table
update user set authentication_string=PASSWORD("") where User='root'; # update password to nothing
update user set plugin="mysql_native_password" where User='root'; # set password resolving to default mechanism for root user
flush privileges;
quit;
3. Führen Sie weitere Bash-Befehle aus
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start # reset mysql
# try login to database, just press enter at password prompt because your password is now blank
mysql -u root -p
4. Socket-Problem (aus Ihren Kommentaren)
Wenn Sie eine Buchse sehen error kam eine Community mit 2 möglichen Lösungen:
sudo mkdir -p /var/run/mysqld; sudo chown mysql /var/run/mysqld
sudo mysqld_safe --skip-grant-tables &
(Dank an @Cerin)
Oder
mkdir -p /var/run/mysqld && chown mysql:mysql /var/run/mysqld
(Dank an @Peter Dvukhrechensky)
Blinde Pfade und mögliche Kantenfehler
Verwenden Sie 127.0.0.1 anstelle von localhost
mysql -uroot # "-hlocalhost" is default
Kann zu "Fehlende Datei" oder SLT-Fehler führen.
mysql -uroot -h127.0.0.1
Funktioniert besser.
Überspringen Sie das Socket-Problem
Ich habe viele Möglichkeiten gefunden, mysqld.sock
zu erstellen Datei, ändern Sie die Zugriffsrechte oder verknüpfen Sie sie per Symlink. Es war schließlich nicht das Problem.
Überspringen Sie my.cnf
Datei
Das Problem war auch nicht da. Wenn Sie sich nicht sicher sind, hilft Ihnen das vielleicht weiter.
Für Ubuntu 18.04 und MySQL 5.7
-
Schritt 1:
sudo mkdir /var/run/mysqld;
Schritt 2:
sudo chown mysql /var/run/mysqld
Schritt 3:
sudo mysqld_safe --skip-grant-tables
&beenden (verwenden Sie quit, wenn es hängen bleibt)
ohne Passwort bei mysql anmelden
-
Schritt 4:
sudo mysql --user=root mysql
Schritt 5:
SELECT user,authentication_string,plugin,host FROM mysql.user;
Schritt 6:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root'
Melden Sie sich jetzt mit
anmysql -u root -p <root>
Sie können wie folgt versuchen, es funktioniert für mich.
Server starten:
sudo service mysql start
Gehen Sie jetzt zum Sockenordner:
cd /var/run
Socke sichern:
sudo cp -rp ./mysqld ./mysqld.bak
Server stoppen:
sudo service mysql stop
Stellen Sie die Socke wieder her:
sudo mv ./mysqld.bak ./mysqld
Starten Sie mysqld_safe:
sudo mysqld_safe --skip-grant-tables --skip-networking &
MySQL-Shell initialisieren:
mysql -u root
Passwort ändern:
Wählen Sie daher zuerst die Datenbank aus
mysql> use mysql;
Geben Sie nun unten zwei Abfragen ein:
mysql> update user set authentication_string=password('123456') where user='root';
mysql> update user set plugin="mysql_native_password" where User='root';
Jetzt wird alles in Ordnung sein.
mysql> flush privileges;
mysql> quit;
Zur Überprüfung:
mysql -u root -p
fertig!
N.B, After login please change the password again from phpmyadmin
Überprüfen Sie nun hostname/phpmyadmin
Username: root
Password: 123456
Weitere Einzelheiten finden Sie unter So setzen Sie das vergessene Passwort phpmyadmin in Ubuntu zurück
Die mysql
Der Befehl verwendet standardmäßig UNIX-Sockets, um eine Verbindung zu MySQL herzustellen.
Wenn Sie MariaDB verwenden, müssen Sie das Unix Socket Authentication Plugin auf der Serverseite laden.
Sie können dies tun, indem Sie [mysqld]
bearbeiten Konfiguration wie folgt:
[mysqld]
plugin-load-add = auth_socket.so
Je nach Distribution befindet sich die Konfigurationsdatei normalerweise unter /etc/mysql/
oder /usr/local/etc/mysql/
Wenn unix_socket=OFF
im selben Abschnitt gesetzt ist, aktivieren Sie es, indem Sie es auf unix_socket=ON
ändern oder dieser Fix gilt nicht.