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
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.
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
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
Ich habe dieses Problem folgendermaßen gelöst:
default_authentication_plugin = mysql_native_password
zum hinzuCREATE USER
'root'@'localhost' IDENTIFIED BY 'password';
tun.GRANT ALL PRIVILEGES ON * . * TO
'root'@'localhost';
und dann FLUSH PRIVILEGES;
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?
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.
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.
Ich habe dieses Problem folgendermaßen gelöst:
Geben Sie die Systemeinstellungen -> mysql ein
Wählen Sie "Datenbank initialisieren" und geben Sie ein neues Root-Passwort ein.
Melden Sie sich mit dem neuen Passwort bei phpmyadmin an.
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
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.
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!
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'rootpassword';
Melden Sie sich über die Befehlszeile an, danach funktioniert es.
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.
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.
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:
mysql -u root -p
, Geben Sie Ihr Passwort ein.CREATE USER 'newMySqlUsername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mysqlNewUsernamePassword';
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';
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.
Ich benutzte ALTER USER [email protected] IDENTIFIED WITH mysql_native_password BY 'PASSWORD';
es funktionierte
Ich habe dies mit MySQL 8.0.12 gelöst, indem ich Folgendes ausgeführt habe:
mysql_upgrade -u root