Mysql
 sql >> Base de données >  >> RDS >> Mysql

Pourquoi mon script docker-entrypoint-initdb.d (comme spécifié dans docker-compose.yml) n'est-il pas exécuté pour initialiser une nouvelle instance MySQL ?

Le diable se cache dans les détails...

Vous avez une double définition de root dans vos variables d'environnement. root l'utilisateur est créé par défaut avec le mot de passe de MYSQL_ROOT_PASSWORD . Vous demandez alors de créer un deuxième utilisateur "normal"... avec exactement le même nom et mot de passe (c'est-à-dire avec MYSQL_USER et MYSQL_PASSWORD )

Si vous regardez attentivement votre journal de démarrage, vous verrez une erreur

db_1       | ERROR 1396 (HY000) at line 1: Operation CREATE USER failed for 'root'@'%'

Cela arrête en fait le traitement ultérieur de vos fichiers init dans docker-entrypoint-initdb.d et continue avec le reste du processus de démarrage de l'image (c'est-à-dire le redémarrage de mysql après l'initialisation sur le serveur temporaire).

Déposez simplement MYSQL_USER et MYSQL_PASSWORD dans vos env vars, ou définissez un utilisateur différent de root et vous verrez immédiatement vos fichiers d'initialisation traités (n'oubliez pas de vider à nouveau votre répertoire de données).