Der Teufel versteckt sich im Detail...
Sie haben eine doppelte Definition von root in Ihren Umgebungsvariablen. root Der Benutzer wird standardmäßig mit dem Passwort aus MYSQL_ROOT_PASSWORD erstellt . Sie bitten dann darum, einen zweiten "normalen" Benutzer zu erstellen ... mit genau demselben Namen und Passwort (d. h. mit MYSQL_USER und MYSQL_PASSWORD )
Wenn Sie sich Ihr Startprotokoll genau ansehen, sehen Sie einen Fehler
db_1 | ERROR 1396 (HY000) at line 1: Operation CREATE USER failed for 'root'@'%'
Dies stoppt tatsächlich die weitere Verarbeitung Ihrer Init-Dateien in docker-entrypoint-initdb.d und fährt mit dem Rest des Image-Startvorgangs fort (d. h. Neustart von mysql nach der Initialisierung auf dem temporären Server).
Lassen Sie einfach MYSQL_USER fallen und MYSQL_PASSWORD in Ihren Umgebungsvariablen oder legen Sie einen anderen Benutzer als root fest und Sie werden sofort sehen, wie Ihre Init-Dateien verarbeitet werden (vergessen Sie nicht, Ihr Datenverzeichnis wieder zu leeren).