PostgreSQL
複数ベンダがそれぞれ互換環境な商用DBをつくっていたりいなかったりして技術を持ち寄っているのかな
APIは互換性があるものが多い
Linuxディストリビューションでは標準的に利用できる 日本PostgreSQLユーザ会
台湾にもユーザ会あり
user と role
user は role の別名、デフォルトでログインできるかどうかの違い程度
設定
設定ファイルは /etc/postgresql/15/main や /usr/lib/postgresql/15/data, /var/lib/pgsql/data などどこかにある
アクセス制御に pg_hba.conf と postgresql.conf を編集する
pg_hba.conf
IPアドレスと認証方法などを制御するもの
postgresql.conf
待ち受けポート(listen_addresses)が初期 localhost なので * などに変更すると他サーバなどからも接続できたりする
code:postgresql.conf
listen_addresses='localhost,192.168.0.11,fe80::xxxx:xxxx:xxxx:xxxx'
localnetwork 系から接続できるようにしておく
pg_hba.conf
postgresql.conf の listen_addresses の範囲内で接続許可される
code:pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD
host all all 192.168.0.0/24 scram-sha-256
host all all fe80::/64 scram-sha-256
IPv4 と IPv6 のローカルアドレスっぽい例
TYPE
local Unix Socketを使用
host TCP/IPを使用 SSLは有無どちらも可
hostssl SSLで暗号化されている場合のみ
hostnossl SSL で暗号化されていない場合のみ
DATABASE
all すべて
sameuser ユーザ名と同じ名前のDBのみ
samerole 同じロールに所属しているユーザとDB スーパーユーザーもロールが必要
replication 特定のDBを指定しない接続
その他 DB名 カンマ区切りで複数記述可能
USER
all
+グループ +ロール 関節的にロールに含まれていても可
その他 ユーザ ロール 直接ロールに含まれる カンマ区切り可
@ファイル名 ユーザ名を含むファイルで指定
ADDRESS
all すべて
samehost 自身のアドレス
ホスト名
METHOD
trust 無条件許可
reject 無条件拒否
peer
ident
password 平文パスワード
md5 PostgreSQL 10ぐらいまでのデフォルト暗号化形式 18ぐらいで廃止 scram-sha-256 用パスワードならそちらも利用可能
scram-sha-256 RFC 7677 の認証方式 PostgreSQL 10ぐらいから利用可能 # systemctl restart postgresql
コンテナ、Compose
table:JDBC
Driver org.postgresql.Driver 今は設定不要
DataSource org.postgresql.ds.PgSImpleDataSource
org.postgresql.ds.PgPoolingDataSource 使える?
org.postgresql.ds.PGConnectionPoolDataSource ?
org.postgresql.xa.PGXADataSource
JDBC URL jdbc:postgresql://host:port/database host, port, database 省略可能
code:Maven
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>[42.7.4,)</version>
<type>jar</type>
</dependency>