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