3.3.4.5. パスワードの変更
パスワードはイメージ設定の一部であるため、データベースユーザー (POSTGRESQL_USER
) と postgres 管理ユーザーのパスワードを変更するためにサポートされている唯一の方法は、環境変数 POSTGRESQL_PASSWORD
および POSTGRESQL_ADMIN_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> ...] \ POSTGRESQL_PASSWORD=<new_password> \ POSTGRESQL_ADMIN_PASSWORD=<new_admin_password>
アプリケーションによっては、アプリケーションの他の部分にパスワード用の他の環境変数があり、それらも一致するように更新する必要があります。たとえば、データベースユーザーのパスワードと一致する必要があるフロントエンド Pod に、より一般的な DATABASE_USER
変数が存在する可能性があります。アプリケーションごとに必要なすべての環境変数に対してパスワードが同期していることを確認してください。同期していないと、トリガーされたときに Pod の再デプロイに失敗する可能性があります。
設定変更トリガー が設定されている場合には、環境変数を更新すると、データベースサーバーの再デプロイメントがトリガーされます。それ以外の場合には、新しいデプロイメントを手動で起動して、パスワードの変更を適用する必要があります。
新規のパスワードが有効になっていることを確認するには、まず、実行中の PostgreSQL Pod へのリモートシェルセッションを開きます。
$ oc rsh <pod>
bash シェルから、データベースユーザーの新規パスワードを確認します。
bash-4.2$ PGPASSWORD=<new_password> psql -h postgresql $POSTGRESQL_DATABASE $POSTGRESQL_USER -c "SELECT * FROM (SELECT current_database()) cdb CROSS JOIN (SELECT current_user) cu"
パスワードが正しく変更された場合には、以下のような表が表示されるはずです。
current_database | current_user ------------------+-------------- default | django (1 row)
bash シェルから、postgres 管理ユーザーの新規のパスワードを検証します。
bash-4.2$ PGPASSWORD=<new_admin_password> psql -h postgresql $POSTGRESQL_DATABASE postgres -c "SELECT * FROM (SELECT current_database()) cdb CROSS JOIN (SELECT current_user) cu"
パスワードが正しく変更された場合には、以下のような表が表示されるはずです。
current_database | current_user ------------------+-------------- default | postgres (1 row)