J'ai installé le serveur MySQL 8.0 et phpMyAdmin, mais lorsque j'essaie d'y accéder à partir du navigateur, les erreurs suivantes se produisent:
#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
J'imagine que cela doit avoir quelque chose à voir avec les mots de passe forts mis en œuvre et la fraîcheur relative de la version de MySQL.
Mais je ne connais rien à la configuration de pilote et de connexion la plus avancée.
Est-ce que quelqu'un a fait face au même problème et l'a résolu? :RÉ
Modifier
installé avec apt
apt-get install mysql-server phpmyadmin
Connectez-vous à la console MySQL avec l'utilisateur root:
root@9532f0da1a2a:/# mysql -u root -pPASSWORD
et changez le plug-in d'authentification avec le mot de passe ici:
mysql> ALTER USER root IDENTIFIED WITH mysql_native_password BY 'PASSWORD';
Query OK, 0 rows affected (0.08 sec)
Vous pouvez lire plus d'informations sur le plug-in d'authentification préféré dans le manuel de référence MySQL 8.0
Cela fonctionne parfaitement dans un environnement docker ized:
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
Vous pouvez donc maintenant vous connecter à phpMyAdmin sur http: // localhost: 8080 avec root/PASSWORD
mysql/mysql-server
Si vous utilisez mysql/mysql-server docker image
Mais rappelez-vous, il ne s'agit que d'une solution "rapide et sale" dans l'environnement de développement. Il n'est pas sage de changer le le plug-in d'authentification préféré de MySQL .
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
Solution mise à jour le 10/04/2018
Modifiez le plug-in d'authentification par défaut MySQL en supprimant la mise en commentaire du paramètre default_authentication_plugin=mysql_native_password
dans /etc/my.cnf
.
À utiliser à vos risques et périls
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
Solution de contournement mise à jour au 30/01/2019
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
Le nouveau MySQL 8.0.11 utilise caching_sha2_password
comme méthode d’authentification par défaut. Je pense que phpMyAdmin ne peut pas comprendre cette méthode d'authentification . Vous devez créer un utilisateur avec l'une des méthodes d'authentification les plus anciennes, par exemple. CREATE USER xyz@localhost IDENTIFIED WITH mysql_native_password BY 'passw0rd'
.
Plus ici/ https://dev.mysql.com/doc/refman/8.0/en/create-user.html et ici https://dev.mysql.com/doc/refman/8.0/en /authentication-plugins.html
J'ai résolu ce problème en procédant comme suit:
default_authentication_plugin = mysql_native_password
auCREATE USER
'root'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON * . * TO
'root'@'localhost';
puis FLUSH PRIVILEGES;
Une autre idée: tant que phpmyadmin et les autres outils php ne fonctionnent pas, ajoutez cette ligne à votre fichier /etc/mysql/my.cnf
default_authentication_plugin = mysql_native_password
Voir aussi: Mysql Ref
Je sais qu'il s'agit d'un problème de sécurité, mais que faire si les outils ne fonctionnent pas avec caching_sha2_password?
Je suis allé au système
préférences -> mysql -> initialiser la base de données -> utiliser le cryptage de mot de passe hérité (au lieu de fort) -> même mot de passe entré
en tant que mon fichier config.inc.php
, j'ai redémarré le serveur Apache et cela a fonctionné. J'étais toujours méfiant à ce sujet alors j'ai arrêté les serveurs Apache et mysql et les ai redémarrés et maintenant cela fonctionne.
J'ai résolu mon problème essentiellement avec la réponse d'András:
1- Connectez-vous à la console MySQL avec l'utilisateur root:
root@9532f0da1a2a:/# mysql -u root -pPASSWORD
Et tapez le mot de passe de la racine à auth.
2- J'ai créé un nouvel utilisateur:
mysql> CREATE USER 'user'@'hostname' IDENTIFIED BY 'password';
3- Accorder tous les privilèges au nouvel utilisateur:
mysql> GRANT ALL PRIVILEGES ON *.* To 'user'@'hostname';
4- Changer le plugin d’authentification avec le mot de passe:
mysql> ALTER USER user IDENTIFIED WITH mysql_native_password BY 'PASSWORD';
Maintenant, phpmyadmin fonctionne bien en enregistrant le nouvel utilisateur.
J'ai résolu ce problème en procédant comme suit:
Entrez dans les préférences système -> mysql
Sélectionnez "Initialize database" et entrez un nouveau mot de passe root en sélectionnant "Use Legacy Password Encryption".
Connectez-vous à phpmyadmin avec le nouveau mot de passe.
Si vous utilisez le conteneur mysql docker officiel, il existe une solution simple:
Ajoutez la ligne suivante à votre service docker-compose:
command: --default-authentication-plugin=mysql_native_password
Exemple de configuration:
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
Comme @kgr l'a mentionné, MySQL 8.0.11 a modifié la méthode d'authentification.
J'ai ouvert un rapport de bogue phpMyAdmin à ce sujet: https://github.com/phpmyadmin/phpmyadmin/issues/14220 .
MySQL 8.0.4-rc fonctionnait bien pour moi, et je pense que c’est ridicule pour MySQL d’apporter un tel changement dans une version au niveau des correctifs.
J'ai eu ce problème, je n'ai trouvé aucun fichier ini dans Windows, mais la solution qui a fonctionné pour moi était très simple.
1. Ouvrez le programme d'installation mysql.
2. Reconfigurer le serveur mysql, c'est le premier lien.
3. Aller à la méthode d'authentification.
4. Choisissez 'Authentification héritée'.
5. Donnez votre mot de passe (champ suivant).
6. Appliquer les modifications.
Ça y est, espérons que ma solution fonctionne bien pour vous aussi!
Pour résoudre ce problème, je viens d'exécuter une requête dans ma console mysql
.
Pour cette connexion à la console mysql en utilisant cette
mysql -u {username} -p{password}
Après cela, je viens d'exécuter une requête comme indiqué ci-dessous: -
ALTER user '{USERNAME}'@'localhost' identified with mysql_native_password by '{PASSWORD}';
quand je lance cette requête, je reçois le message que cette requête est exécutée. Puis connectez-vous à PHPMYADMIN avec nom d'utilisateur/mot de passe.
Comme beaucoup l'ont souligné dans d'autres réponses, changer le plug-in d'authentification par défaut de MySQL en natif fait l'affaire.
Néanmoins, comme je ne peux pas utiliser le nouveau plugin caching_sha2_password, je vais attendre que la compatibilité soit développée pour fermer le sujet.
J'ai résolu ceci avec MySQL 8.0.12 en lançant:
mysql_upgrade -u root