it-swarm.com.de

phpMyAdmin unter MySQL 8.0

Ich habe den MySQL 8.0-Server und phpMyAdmin installiert, aber wenn ich versuche, über den Browser darauf zuzugreifen, treten folgende Fehler auf:

#2054 - The server requested authentication method unknown to the client
mysqli_real_connect(): The server requested authentication method unknown to the client [caching_sha2_password]
mysqli_real_connect(): (HY000/2054): The server requested authentication method unknown to the client

Ich kann mir vorstellen, dass es etwas mit den starken Kennwörtern und der relativen Aktualität der MySQL-Version zu tun haben muss.

Ich weiß jedoch nichts von der fortschrittlichsten Treiber- und Verbindungskonfiguration.

Hat jemand das gleiche Problem gesehen und gelöst? : D

Bearbeiten
installiert mit apt

apt-get install mysql-server phpmyadmin
32
Lucas Noetzold

Melden Sie sich an der MySQL-Konsole mit root user an:

[email protected]:/# mysql -u root -pPASSWORD

und ändern Sie das Authentifizierungs-Plugin mit dem Passwort dort:

mysql> ALTER USER root IDENTIFIED WITH mysql_native_password BY 'PASSWORD';
Query OK, 0 rows affected (0.08 sec)

Weitere Informationen zum Preferred Authentication Plugin finden Sie im MySQL 8.0 Referenzhandbuch.

https://dev.mysql.com/doc/refman/8.0/de/upgrading-from-previous-series.html#upgrade-caching-sha2-password

Es funktioniert perfekt in einer Docker ized-Umgebung:

docker run --name mysql -e MYSQL_ROOT_PASSWORD=PASSWORD -p 3306:3306 -d mysql:latest

docker exec -it mysql bash

mysql -u root -pPASSWORD

ALTER USER root IDENTIFIED WITH mysql_native_password BY 'PASSWORD';

exit

exit

docker run --name phpmyadmin -d --link mysql:db -p 8080:80 phpmyadmin/phpmyadmin:latest

So können Sie sich jetzt unter http: // localhost: 8080 mit root/PASSWORD bei phpMyAdmin anmelden


mysql/mysql-server

Wenn Sie mysql/mysql-server docker image verwenden 

Aber denken Sie daran, es ist nur eine "schnelle und schmutzige" Lösung in der Entwicklungsumgebung. Es ist nicht ratsam, das MySQL Preferred Authentication Plugin zu ändern.

docker run --name mysql -e MYSQL_ROOT_PASSWORD=PASSWORD -e MYSQL_ROOT_Host=% -p 3306:3306 -d mysql/mysql-server:latest
docker exec -it mysql mysql -u root -pPASSWORD -e "ALTER USER root IDENTIFIED WITH mysql_native_password BY 'PASSWORD';"
docker run --name phpmyadmin -d --link mysql:db -p 8080:80 phpmyadmin/phpmyadmin:latest

Aktualisierte Lösung am 04.10.2014

Ändern Sie das Standard-Authentifizierungs-Plugin von MySQL, indem Sie die Einstellung default_authentication_plugin=mysql_native_password in /etc/my.cnf aufheben.

Verwendung auf eigene Gefahr

docker run --name mysql -e MYSQL_ROOT_PASSWORD=PASSWORD -e MYSQL_ROOT_Host=% -p 3306:3306 -d mysql/mysql-server:latest
docker exec -it mysql sed -i -e 's/# default-authentication-plugin=mysql_native_password/default-authentication-plugin=mysql_native_password/g' /etc/my.cnf
docker stop mysql; docker start mysql
docker run --name phpmyadmin -d --link mysql:db -p 8080:80 phpmyadmin/phpmyadmin:latest

Aktualisierte Problemumgehung am 30.01.2013

docker run --name mysql -e MYSQL_ROOT_PASSWORD=PASSWORD -e MYSQL_ROOT_Host=% -p 3306:3306 -d mysql/mysql-server:latest
docker exec -it mysql sed -i -e 's/# default-authentication-plugin=mysql_native_password/default-authentication-plugin=mysql_native_password/g' /etc/my.cnf
docker exec -it mysql mysql -u root -pPASSWORD -e "ALTER USER root IDENTIFIED WITH mysql_native_password BY 'PASSWORD';"
docker stop mysql; docker start mysql
docker run --name phpmyadmin -d --link mysql:db -p 8080:80 phpmyadmin/phpmyadmin:latest

default_authentication_plugin

46

New MySQL 8.0.11 verwendet caching_sha2_password als Standardauthentifizierungsmethode. Ich denke, dass phpMyAdmin diese Authentifizierungsmethode nicht verstehen kann. Sie müssen einen Benutzer mit einer der älteren Authentifizierungsmethode erstellen, z. CREATE USER [email protected] IDENTIFIED WITH mysql_native_password BY 'passw0rd'.

Mehr hier https://dev.mysql.com/doc/refman/8.0/de/create-user.html und hier https://dev.mysql.com/doc/refman/8.0/de /authentication-plugins.html

17
kgr

Ich habe dieses Problem folgendermaßen gelöst:

  1. Fügen Sie default_authentication_plugin = mysql_native_password zum hinzu
    [mysqld] -Abschnitt von my.cnf
  2. Geben Sie mysql ein und erstellen Sie einen neuen Benutzer, indem Sie etwas wie CREATE USER 'root'@'localhost' IDENTIFIED BY 'password'; tun.
  3. Erteilen Sie gegebenenfalls Privilegien. Z.B. GRANT ALL PRIVILEGES ON * . * TO 'root'@'localhost'; und dann FLUSH PRIVILEGES;
  4. Melden Sie sich mit einem neuen Benutzer bei phpmyadmin an
12
user1706897

Eine andere Idee: Solange Phpmyadmin und andere PHP-Tools nicht damit arbeiten, fügen Sie diese Zeile einfach Ihrer Datei /etc/mysql/my.cnf hinzu 

default_authentication_plugin = mysql_native_password

Siehe auch: Mysql Ref

Ich weiß, dass dies eine Sicherheitslücke ist, aber was tun, wenn die Tools nicht mit caching_sha2_password funktionieren?

12
sneaky

Ich ging zum System 

preferences -> mysql -> initialize database -> ältere Verschlüsselung verwenden (statt stark) -> dasselbe Passwort eingegeben 

als meine config.inc.php-Datei wurde der Apache-Server neu gestartet, und es funktionierte. Ich war immer noch misstrauisch, also habe ich den Apache- und MySQL-Server angehalten und neu gestartet, und jetzt funktioniert es. 

8
Claire

Ich habe mein Problem im Wesentlichen mit der Antwort von András gelöst:

1- Melden Sie sich an der MySQL-Konsole mit root-Benutzer an:

[email protected]:/# mysql -u root -pPASSWORD

Geben Sie das Kennwort des Root-Verzeichnisses ein, um die Authentifizierung durchzuführen.

2- Ich habe einen neuen Benutzer erstellt:

mysql> CREATE USER 'user'@'hostname' IDENTIFIED BY 'password';

3- Gewähren Sie dem neuen Benutzer alle Berechtigungen:

mysql> GRANT ALL PRIVILEGES ON *.* To 'user'@'hostname';

4- Ändern Sie das Authentifizierungs-Plugin mit dem Passwort:

mysql> ALTER USER user IDENTIFIED WITH mysql_native_password BY 'PASSWORD';

Phpmyadmin funktioniert jetzt gut und protokolliert den neuen Benutzer.

5
Bruno Carazato

Ich habe dieses Problem folgendermaßen gelöst:

  1. Geben Sie die Systemeinstellungen -> mysql ein

  2. Wählen Sie "Datenbank initialisieren" und geben Sie ein neues Root-Passwort ein.

  3. Melden Sie sich mit dem neuen Passwort bei phpmyadmin an.

4

Wenn Sie den offiziellen Docker-Container von mysql verwenden, gibt es eine einfache Lösung:

Fügen Sie Ihrem Docker-Compose-Dienst die folgende Zeile hinzu:

command: --default-authentication-plugin=mysql_native_password

Beispielkonfiguration:

mysql:
     image: mysql:8
     networks:
       - net_internal
     volumes:
       - mysql_data:/var/lib/mysql
     environment:
       - MYSQL_ROOT_PASSWORD=root
       - MYSQL_DATABASE=db
     command: --default-authentication-plugin=mysql_native_password
3
Biró Dani

Wie @kgr erwähnt, hat MySQL 8.0.11 einige Änderungen an der Authentifizierungsmethode vorgenommen.

Ich habe dazu einen phpMyAdmin-Fehlerbericht geöffnet: https://github.com/phpmyadmin/phpmyadmin/issues/14220 .

MySQL 8.0.4-rc hat für mich gut funktioniert, und ich denke irgendwie, dass es für MySQL lächerlich ist, eine solche Änderung in einem Patch-Level-Release vorzunehmen. 

3
Isaac Bennetch

Ich hatte dieses Problem, fand keine ini-Datei in Windows, aber die Lösung, die für mich funktionierte, war sehr einfach.
1. Öffnen Sie das Mysql-Installationsprogramm.
2. Konfigurieren Sie den MySQL-Server neu, es ist der erste Link.
3. Gehen Sie zur Authentifizierungsmethode.
4. Wählen Sie "Legacy-Authentifizierung".
5. Geben Sie Ihr Passwort ein (nächstes Feld).
6. Änderungen übernehmen.

Ich hoffe, meine Lösung funktioniert auch für Sie!

2
Stephan
 mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'rootpassword';

Melden Sie sich über die Befehlszeile an, danach funktioniert es.

2
Vipan K Verma

Um dieses Problem zu beheben, führe ich nur eine Abfrage in meiner mysql-Konsole aus. 

Für diesen Login auf MySQL-Konsole mit diesem

mysql -u {username} -p{password}

Danach führe ich nur eine Abfrage wie folgt aus: -

ALTER user '{USERNAME}'@'localhost' identified with mysql_native_password by '{PASSWORD}';

wenn ich diese Abfrage ausführte, erhielt ich die Nachricht, dass die Abfrage ausgeführt wurde. Melden Sie sich dann mit Benutzername/Passwort bei PHPMYADMIN an.

2
Lucky Saini

Wie viele in anderen Antworten darauf hinwiesen, führt das Standard-Authentifizierungs-Plugin von MySQL in native um.

Da ich jedoch das neue caching_sha2_password -Plugin nicht verwenden kann, warte ich bis die Kompatibilität entwickelt ist, um das Thema zu schließen.

1
Lucas Noetzold

um dieses Problem zu beheben, habe ich es vorgezogen, einen neuen Benutzer für PhpMyAdmin zu erstellen, da das Ändern des Root-Benutzers zu Problemen bei der systemeigenen Anmeldung mit anderen Anwendungen wie MySQL WorkBench geführt hat.

Das habe ich gemacht:

  • Melden Sie sich mit dem Root-Benutzer an der MySQL-Konsole an: mysql -u root -p, Geben Sie Ihr Passwort ein.
  • Erstellen wir einen neuen Benutzer in der MySQL-Shell:
CREATE USER 'newMySqlUsername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mysqlNewUsernamePassword';
  • Zu diesem Zeitpunkt hat newMysqlUsername keine Berechtigung, mit den Datenbanken etwas zu tun. Dies ist erforderlich, um dem Benutzer Zugriff auf die benötigten Informationen zu gewähren.
GRANT ALL PRIVILEGES ON * . * TO ' newMySqlUsername'@'localhost';
  • Nachdem Sie die Berechtigungen festgelegt haben, die Sie für Ihre neuen Benutzer einrichten möchten, müssen Sie immer alle Berechtigungen neu laden.
FLUSH PRIVILEGES;
  • Melden Sie sich ab, indem Sie quit oder \q Eingeben. Ihre Änderungen werden nun wirksam. Wir können uns mit dem neuen Benutzer bei PhpMyAdmin anmelden und haben Zugriff auf die Datenbanken.

  • Sie können sich auch mit diesem Befehl im Terminal wieder anmelden:

mysql -u newMySqlUsername -p

Sie können die Authentifizierung ändern, wenn Sie unter Windows ausgeführt werden, indem Sie die Installation durch Ausführen der MSI neu konfigurieren. Sie werden aufgefordert, die Standardauthentifizierung in Legacy zu ändern. Anschließend können Sie mit dieser Option fortfahren, um die Authentifizierung in Legacy zu ändern.

0
Mohammed Altaf

Ich benutzte ALTER USER [email protected] IDENTIFIED WITH mysql_native_password BY 'PASSWORD'; es funktionierte

0
Joseph Daudi

Ich habe dies mit MySQL 8.0.12 gelöst, indem ich Folgendes ausgeführt habe:

mysql_upgrade -u root
0
Pelmered