Mysql
 sql >> Database >  >> RDS >> Mysql

Perché il mio script docker-entrypoint-initdb.d (come specificato in docker-compose.yml) non viene eseguito per inizializzare una nuova istanza MySQL?

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