Mysqlサービスを停止するとコンテナは自動的に停止するため、Dockerコンテナのルートパスワードを変更するにはどうすればよいですか。
Mysqlコンテナを停止して、新しいコンテナをデプロイする必要がありますか?
docker exec
セッション を使用して、実行中のコンテナから変更できます。詳細については、「 コンテナ内からMySQL Serverへの接続
サーバーの準備ができたら、開始したばかりのMySQLサーバーコンテナー内でmysqlクライアントを実行し、MySQLサーバーに接続できます。
docker exec -it
コマンドを使用して、開始したDockerコンテナー内でmysql
クライアントを開始します。以下に例を示します。docker exec -it mysql1 mysql -uroot -p
求められたら、生成されたrootパスワードを入力します(検索方法については上記の手順を参照してください)。
MYSQL_ONETIME_PASSWORD
オプションはデフォルトでtrueであるため、上記のサンプルコマンドでサーバーコンテナーを起動し、mysqlクライアントをサーバーに接続した後、MySQL 5.7以降でこのステートメントを発行してサーバールートパスワードをリセットする必要があります。mysql> update user set authentication_string=password('new_password') where user='root';
または、代わりに実行し、
mysql> SET PASSWORD FOR 'root' = PASSWORD('new_password');
MySQL 5.7より古いバージョンの場合は、次を実行します。
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';
newpassword
を選択したパスワードに置き換えます。パスワードがリセットされると、サーバーを使用する準備が整います。
次に、「 hub.docker.com/mysql
」で説明されているように、忘れないでください docker secrets :
環境変数を介して機密情報を渡す代わりに、
_FILE
を前述の環境変数に追加して、初期化スクリプトにコンテナ内のファイルからこれらの変数の値をロードさせることができます。
特に、これは/run/secrets/<secret_name>
ファイルに保存されたDockerシークレットからパスワードをロードするために使用できます。
例えば:$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql-root -d mysql:tag