web-dev-qa-db-fra.com

pas capable de se connecter à mysql docker de local

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'.

5
Gaurang Shah

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

15
axelferreira

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
13
Ivan Beldad

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.

11
psychemedia

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".

0
Chris Clark