Comment se connecter de localhost au conteneur Docker exécuté sur le réseau Docker
P粉418854048
P粉418854048 2023-07-25 11:54:51
0
1
513
<p>J'ai un conteneur Docker MySQL écrit en utilisant Docker comme ceci :</p> <pre class="brush:php;toolbar:false;">version : "3.3" prestations de service: serveur de base de données : nom_conteneur : base de données image : mysql : dernière construire: fichier docker : ./Dockerfile environnement: MYSQL_ROOT_PASSWORD : rootTest MYSQL_USER : Soumalya MYSQL_PASSWORD : test utilisateur ports : - "3031:3306" réseaux : - interne tomes : -mysql:/var/lib/mysql - ./init.sql:/docker-entrypoint-initdb.d/init.sql:ro redémarrage : à moins d'être arrêté réseaux : interne: pilote : pont tomes : mysql :</pre> <p>Je me connecte à localhost:3031 avec le bon mot de passe, mais cela me donne cette erreur : </p> <pre class="lang-bash Prettyprint-override"><code>Accès refusé pour l'utilisateur 'root'@'172.19.0.1' (en utilisant le mot de passe : OUI) </code></pre> <p>Comment corriger cette erreur ? Les autres conteneurs du même réseau interne ne parviennent pas non plus à se connecter à la base de données. </p><p>Je donne le contenu du Dockerfile ici :</p><p><code></code></p> <pre class="brush:php;toolbar:false;">AJOUTER init.sql init.sql</pre> <p>J'ai donné le contenu de init. sql ici :</p> <pre class="brush:php;toolbar:false;">créer une base de données s'il n'existe pas d'avis ; créer une base de données s'il n'existe pas d'utilisateurs ; créer une base de données s'il n'existe pas de fournisseurs ; ACCORDEZ TOUS LES PRIVILÈGES sur les avis.* à 'soumalya'@'%' ; ACCORDEZ TOUS LES PRIVILÈGES sur les utilisateurs.* à 'soumalya'@'%'; ACCORDEZ TOUS LES PRIVILÈGES sur les fournisseurs.* à 'soumalya'@'%';</pre> <p>Dans les journaux du conteneur, je peux voir que la base de données démarre et attend les connexions entrantes sur le port 3306. </p>
P粉418854048
P粉418854048

répondre à tous(1)
P粉803527801

Comme @HansKillan l'a dit, j'ai changé le mot de passe alors que la base de données existait déjà, le mot de passe modifié a été ignoré, il utilisait l'ancien mot de passe. J'ai dû modifier manuellement le mot de passe de mon utilisateur en écrivant la commande SQL à l'aide de docker exec <container_name>... en utilisant la commande SQL pour modifier le mot de passe de l'utilisateur. Ensuite, tout s'est bien passé. Dans votre cas, si votre base de données ne contient pas beaucoup de données, alors vous pouvez simplement supprimer le volume et recréer le conteneur pour raccourcir le délai

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal