Il diavolo si nasconde nei dettagli...
Hai una doppia definizione di root nel tuo ambiente vars. root l'utente viene creato per impostazione predefinita con la password da MYSQL_ROOT_PASSWORD . Quindi chiedi di creare un secondo utente "normale"... con lo stesso identico nome e password (cioè con MYSQL_USER e MYSQL_PASSWORD )
Se guardi attentamente il tuo registro di avvio, vedrai un errore
db_1 | ERROR 1396 (HY000) at line 1: Operation CREATE USER failed for 'root'@'%'
Questo in realtà interrompe l'ulteriore elaborazione dei tuoi file init in docker-entrypoint-initdb.d e continua con il resto del processo di avvio dell'immagine (ovvero riavviando mysql dopo l'inizializzazione sul server temporaneo).
Rilascia semplicemente MYSQL_USER e MYSQL_PASSWORD nella tua env vars o imposta un utente diverso da root e vedrai immediatamente i tuoi file init elaborati (non dimenticare di svuotare nuovamente la directory dei tuoi dati).