3.5.4.5. パスワードの変更
パスワードはイメージ設定の一部であるため、データベースユーザー (MYSQL_USER
) および admin ユーザーのパスワードを変更するためにサポートされる唯一の方法は、環境変数 MYSQL_PASSWORD
および MYSQL_ROOT_PASSWORD
をそれぞれ変更することです。
現在のパスワードは、Pod またはデプロイメント設定を Web コンソールで表示するか、CLI で環境変数を一覧表示して表示できます。
$ oc set env pod <pod_name> --list
SQL ステートメントまたは前述の環境変数以外の方法でデータベースのパスワードを変更すると、変数に格納されている値と実際のパスワードが一致しなくなります。データベースコンテナーが起動するたびに、パスワードは環境変数に保存されている値にリセットされます。
これらのパスワードを変更するには、oc set env
コマンドを使用して、関連するデプロイメント設定の任意の環境変数の 1 つまたは両方を更新します。たとえば、テンプレートから作成されたアプリケーションの場合など、複数のデプロイメント設定でこれらの環境変数を使用する場合は、パスワードがすべての場所で同期されるように、各デプロイメント設定の変数を更新する必要があります。これは、すべて同じコマンドで実行できます。
$ oc set env dc <dc_name> [<dc_name_2> ...] \ MYSQL_PASSWORD=<new_password> \ MYSQL_ROOT_PASSWORD=<new_root_password>
アプリケーションによっては、アプリケーションの他の部分にパスワード用の他の環境変数があり、それらも一致するように更新する必要があります。たとえば、データベースユーザーのパスワードと一致する必要があるフロントエンド Pod に、より一般的な DATABASE_USER
変数が存在する可能性があります。アプリケーションごとに必要なすべての環境変数に対してパスワードが同期していることを確認してください。同期していないと、トリガーされたときに Pod の再デプロイに失敗する可能性があります。
設定変更トリガー が設定されている場合には、環境変数を更新すると、データベースサーバーの再デプロイメントがトリガーされます。それ以外の場合には、新しいデプロイメントを手動で起動して、パスワードの変更を適用する必要があります。
新規パスワードが有効になっていることを確認するには、まず、実行中の MariaDB Pod へのリモートシェルセッションを開きます。
$ oc rsh <pod>
bash シェルから、データベースユーザーの新規パスワードを確認します。
bash-4.2$ mysql -u $MYSQL_USER -p<new_password> -h $HOSTNAME $MYSQL_DATABASE -te "SELECT * FROM (SELECT database()) db CROSS JOIN (SELECT user()) u"
パスワードが正しく変更された場合には、以下のような表が表示されるはずです。
+------------+---------------------+ | database() | user() | +------------+---------------------+ | sampledb | user0PG@172.17.42.1 | +------------+---------------------+
root ユーザーの新規パスワードを確認するには、以下を実行します。
bash-4.2$ mysql -u root -p<new_root_password> -h $HOSTNAME $MYSQL_DATABASE -te "SELECT * FROM (SELECT database()) db CROSS JOIN (SELECT user()) u"
パスワードが正しく変更された場合には、以下のような表が表示されるはずです。
+------------+------------------+ | database() | user() | +------------+------------------+ | sampledb | root@172.17.42.1 | +------------+------------------+