やりたいこと
Red Hat build of Keycloak(Keycloakの商用版)にて接続先のデータベースを初期状態のH2からPostgreSQLに変更する。
尚、PostgreSQLは既にインストール済みとする。
環境情報
- Red Hat Enterprise Linux : 9.3 (Plow)
- rhbk-24.0.5
- postgresql-16.4
やり方
conf/keycloak.confにて以下の変更を行い
# The database vendor. db=postgres # The username of the database user. db-username=postgres # The password of the database user. db-password=Test0001 # The full database JDBC URL. If not provided, a default URL is set based on the selected database vendor. db-url=jdbc:postgresql://localhost/keycloak
kc.sh show-configにて設定が変更されていることを確認した上で
# ./bin/kc.sh show-config Current Mode: production Current Configuration: kc.config.built = true (SysPropConfigSource) kc.db = postgres (PropertiesConfigSource[source=file:/root/rhbk-24.0.5/bin/../conf/keycloak.conf]) kc.db-password = ******* (PropertiesConfigSource[source=file:/root/rhbk-24.0.5/bin/../conf/keycloak.conf]) kc.db-url = jdbc:postgresql://localhost/keycloak (PropertiesConfigSource[source=file:/root/rhbk-24.0.5/bin/../conf/keycloak.conf]) kc.db-username = keycloak (PropertiesConfigSource[source=file:/root/rhbk-24.0.5/bin/../conf/keycloak.conf]) ...
該当のDBをPostgreSQL側で作成。テーブルは空の状態にて
$ createdb keycloak Password: $ psql Password for user postgres: psql (16.4) postgres=# \connect keycloak You are now connected to database "keycloak" as user "postgres". keycloak=# \dt Did not find any relations. keycloak=# exit
Keycloak(RHBK)を起動すると
# systemctl restart rhbk
エラーログなく正しく起動される。
# tail ./data/log/keycloak.log ... ... INFO [io.quarkus] (main) Keycloak 24.0.5.redhat-00001 on JVM (powered by Quarkus 3.8.4.redhat-00002) started in 14.768s. Listening on: http://0.0.0.0:8080 ...
尚、接続後にPostgreSQL側を見ると自動的にテーブルが作成されている。
keycloak=# \dt List of relations Schema | Name | Type | Owner --------+-------------------------------+-------+---------- public | admin_event_entity | table | postgres public | associated_policy | table | postgres public | authentication_execution | table | postgres ... public | event_entity | table | postgres
以下、補足です。
補足
PostgreSQL側で事前にデータベースの枠を作成していないと下記のエラーとなりました。
... ERROR [org.keycloak.quarkus.runtime.cli.ExecutionExceptionHandler] (main) ERROR: Failed to start server in (development) mode ... ERROR [org.keycloak.quarkus.runtime.cli.ExecutionExceptionHandler] (main) ERROR: Failed to obtain JDBC connection ... ERROR [org.keycloak.quarkus.runtime.cli.ExecutionExceptionHandler] (main) ERROR: FATAL: database "keycloak" does not exist ... ERROR [org.keycloak.quarkus.runtime.cli.ExecutionExceptionHandler] (main) For more details run the same command passing the '--verbose' option. Also you can use '--help' to see the details about the usage of the particular command.
尚、デフォルトの状態に戻して(keycloak.confの設定をコメントアウト)サービスを再起動すると、元のH2への接続に戻すことができます。
以上、ご参考になれば幸いです。