Diabeł chowa się w szczegółach...
Masz podwójną definicję root w twoich śr. root użytkownik jest domyślnie tworzony z hasłem z MYSQL_ROOT_PASSWORD . Następnie prosisz o utworzenie drugiego "normalnego" użytkownika... z dokładnie taką samą nazwą i hasłem (np. z MYSQL_USER i MYSQL_PASSWORD )
Jeśli przyjrzysz się uważnie dziennikowi uruchamiania, zobaczysz błąd
db_1 | ERROR 1396 (HY000) at line 1: Operation CREATE USER failed for 'root'@'%'
To faktycznie zatrzymuje dalsze przetwarzanie plików init w docker-entrypoint-initdb.d i kontynuuje resztę procesu uruchamiania obrazu (tj. restart mysql po inicjalizacji na serwerze tymczasowym).
Po prostu upuść MYSQL_USER i MYSQL_PASSWORD w swoich zmiennych środowiskowych lub ustaw innego użytkownika niż root i natychmiast zobaczysz przetworzone pliki startowe (nie zapomnij ponownie opróżnić katalogu danych).