J'essaie de me connecter à la base de données mysql à partir de l'image de menu fixe. Cependant, c'est jeter des erreurs.
voici l’image de docker que j’utilise. https://hub.docker.com/_/mysql/
Et voici la commande que j’ai utilisée pour exécuter l’image de menu fixe.
docker run -p 3306:3306 --name mysql_80 -e MYSQL_ROOT_PASSWORD=password -d mysql:8
Voici le résultat de la commande docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9f35d2e39476 mysql:8 "docker-entrypoint.s…" 5 minutes ago Up 5 minutes 0.0.0.0:3306->3306/tcp
si je vérifie l'adresse IP à l'aide de Docker, inspecte et envoie une requête ping à cette adresse IP.
docker inspect 9f35d2e39476 | grep -i ipaddress
Et si j'essaye de me connecter en utilisant localhost
et 127.0.0.1
je reçois une erreur suivante.
Impossible de charger le plug-in d'authentification 'caching_sha2_password'.
J'ai eu le même problème, mais cela ne l'a pas fait pour moi avec un conteneur Docker exécutant mysql 8.X. Je me suis connecté dans le conteneur
docker exec -it CONTAINER_ID bash
puis connectez-vous à mysql en tant que root
mysql --user=root --password
Entrez le mot de passe pour root (la valeur par défaut est 'root') Enfin, exécutez:
ALTER USER 'username' IDENTIFIED WITH mysql_native_password BY 'password';
Vous êtes tous ensemble.
Ceci a déjà été répondu ici: post
Tout d'abord, sachez que vous utilisez un logiciel non stable, ce qui peut entraîner des changements majeurs entre les versions et un comportement inattendu.
Deuxièmement, vous ne pouvez pas cingler directement votre conteneur, il est dans un autre réseau, mais vous pouvez facilement utiliser un autre conteneur pour le cingler.
Mysql 8 utilise caching_sha2_password comme plug-in d'authentification par défaut au lieu de mysql_native_password. Plus d'infos ici .
Si vous rencontrez des problèmes, vous pouvez passer à l'ancien plug-in d'authentification avec quelque chose comme ceci:
docker run -p 3306:3306 --name mysql_80 -e MYSQL_ROOT_PASSWORD=password -d mysql:8 mysqld --default-authentication-plugin=mysql_native_password
J'ai trouvé un correctif ici lors du lancement de docker-compose:
services:
db:
image: mysql
command: mysqld --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
En d’autres termes, revenez au nouveau mécanisme de mot de passe/d’authentification MySQL lors du démarrage de MySQL.
Ceci est probablement considéré comme résolu, mais je voulais documenter ce qu'il m'a fallu pour surmonter cela. J'avais un problème similaire, et revenir à l'ancienne norme de mot de passe n'était pas une solution. J'avais besoin d'utiliser le mot de passe caching_sha2, donc aucun des éléments ci-dessus ne fonctionnait pour moi et je devais utiliser cette commande:
docker run -it --rm mysql mysql -h 172.31.116.20 -p -P6603
Où 172.31.116.20 est mon adresse IP locale où le conteneur est en cours d'exécution et -P6603 est le port sur lequel il s'exécute.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5092251b3dbf mysql "docker-entrypoint..." 16 minutes ago Up 16 minutes 33060/tcp, 0.0.0.0:6603->3306/tcp test1-mysql
J'ai trouvé cette solution sur le site Docker pour le conteneur MySQL: https://hub.docker.com/_/mysql/
Cela se trouve dans la section "Connexion à MySQL à partir du client en ligne de commande MySQL".