sql >> データベース >  >> RDS >> Mysql

新しいMySQLインスタンスを初期化するために(docker-compose.ymlで指定されている)docker-entrypoint-initdb.dスクリプトが実行されないのはなぜですか?

    悪魔は詳細に隠れています...

    rootの二重定義があります 環境変数で。 root ユーザーはデフォルトでMYSQL_ROOT_PASSWORDのパスワードで作成されます 。次に、まったく同じ名前とパスワードを使用して(つまり、MYSQL_USERを使用して)2番目の「通常の」ユーザーを作成するように依頼します。 およびMYSQL_PASSWORD

    起動ログを注意深く見ると、エラーが表示されます

    db_1       | ERROR 1396 (HY000) at line 1: Operation CREATE USER failed for 'root'@'%'
    

    これにより、docker-entrypoint-initdb.d内のinitファイルのそれ以上の処理が実際に停止します。 そして、残りのイメージ起動プロセスを続行します(つまり、一時サーバーでの初期化後にmysqlを再起動します)。

    MYSQL_USERをドロップするだけです およびMYSQL_PASSWORD 環境変数で、またはrootとは異なるユーザーを設定します そして、すぐに処理されたinitファイルが表示されます(データディレクトリを再度空にすることを忘れないでください)。




    1. ckeditorhtmlコードをデータベースに挿入します

    2. 月ごとの製品売上を比較するSQLクエリ

    3. 動的クエリ用にPHPでパラメーター化されたPDOステートメントを作成するにはどうすればよいですか?

    4. SQLデータベースにアドレスを保存するためのベストプラクティス/標準