Maison >base de données >tutoriel mysql >Pourquoi mon conteneur Docker MySQL refuse-t-il l'accès malgré la configuration de MYSQL_ROOT_PASSWORD ?

Pourquoi mon conteneur Docker MySQL refuse-t-il l'accès malgré la configuration de MYSQL_ROOT_PASSWORD ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-03 09:05:11423parcourir

Why Does My Docker MySQL Container Deny Access Despite Setting MYSQL_ROOT_PASSWORD?

Accès refusé à MySQL dans le conteneur Docker malgré la configuration de MYSQL_ROOT_PASSWORD

Introduction

Tentatives d'accès à la base de données MySQL dans un Docker Le conteneur peut générer des erreurs d'accès refusé, même lorsque le mot de passe root a été défini via le Variable d'environnement MYSQL_ROOT_PASSWORD. Ce problème peut survenir en raison d'une mauvaise compréhension de l'impact des données de base de données préexistantes sur l'initialisation.

Problème

Lors de l'initialisation du conteneur, si le volume mappé à la base de données Le répertoire data (db_data dans ce cas) contient déjà un système de fichiers de base de données, le conteneur respectera la base de données existante et ignorera toutes les variables d'environnement liées à l'initialisation, y compris MYSQL_ROOT_PASSWORD. Par conséquent, la tentative d'accès à la base de données avec les informations d'identification configurées échouera.

Solution

Pour résoudre ce problème, assurez-vous de démarrer le conteneur sans autorisation préalable. volume de base de données existant. Ceci peut être réalisé en supprimant le volume de données à l'aide de la commande suivante :

docker-compose down -v

Ensuite, relancez le conteneur avec la commande docker-compose up -d. Ce processus effacera le contenu de la base de données existante et initialisera une nouvelle base de données avec le mot de passe root spécifié stocké dans MYSQL_ROOT_PASSWORD.

Remarque : Soyez prudent car les commandes ci-dessus supprimeront définitivement toutes les données préexistantes dans le volume db_data. Si vous souhaitez conserver ces données, effectuez une sauvegarde avant d'exécuter ces commandes.

Alternative pour les montages de liaison

Si vous utilisez un montage de liaison, supprimez manuellement son contenu en naviguant au chemin de montage de liaison et en exécutant ce qui suit :

rm -rf /path/to/bind/mount/*

Autre pertinent Informations

Cette approche est applicable à l'image docker MySQL. Cependant, il convient de noter que d'autres images Docker de base de données officielles, y compris celles de PostgreSQL et MongoDB, adhèrent à un processus d'initialisation similaire et peuvent rencontrer des problèmes similaires lors de l'utilisation de volumes de données préexistants.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn