Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Warum wird mein docker-entrypoint-initdb.d-Skript (wie in docker-compose.yml angegeben) nicht ausgeführt, um eine neue MySQL-Instanz zu initialisieren?

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