Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Por que meu script docker-entrypoint-initdb.d (conforme especificado em docker-compose.yml) não é executado para inicializar uma nova instância do MySQL?


Diabo se esconde nos detalhes...

Você tem uma definição dupla de root em seu env vars. root o usuário é criado por padrão com a senha de MYSQL_ROOT_PASSWORD . Você então pede para criar um segundo usuário "normal"... com exatamente o mesmo nome e senha (ou seja, com MYSQL_USER e MYSQL_PASSWORD )

Se você olhar atentamente para o seu log de inicialização, verá um erro
db_1       | ERROR 1396 (HY000) at line 1: Operation CREATE USER failed for 'root'@'%'

Isso realmente interrompe o processamento de seus arquivos init em docker-entrypoint-initdb.d e continua com o resto do processo de inicialização da imagem (ou seja, reiniciar o mysql após a inicialização no servidor temporário).

Basta soltar MYSQL_USER e MYSQL_PASSWORD em seu env vars ou defina um usuário diferente de root e você verá imediatamente seus arquivos init processados ​​(não se esqueça de esvaziar seu diretório de dados novamente).