接続サービスファイルの利用を推奨します。“10.2.4 接続サービスファイルを利用する場合”を参照してください。
ポイント
接続サービスファイルを利用するには、以下のいずれかの方法があります。
文字列リテラルまたはホスト変数を使用して、以下のように記述する方法
tcp:postgresql://?service=my_service
環境変数PGSERVICEにサービス名を設定し、かつCONNECT TO DEFAULTを用いる方法
接続サービスファイルを利用しない場合は、以下のSQL文のtargetに、リテラルまたは変数を用いて接続先サーバの情報を指定します。
EXEC SQL CONNECT TO target [AS connection-name] [USER user-name];
dbname@host1,host2[:[port1][,port2]] tcp:postgresql://host1,host2[:[port1][,port2]] [/dbname] [?target_server={primary | prefer_standby}][&sslmode=verify-full&sslservercertcn=<対象とするサーバ証明書のCN(Common Name)>]
上記の形式をリテラルや変数を使わずに直接指定することはできません。
引数 | 説明 |
---|---|
host1 | IPアドレスまたはホスト名を指定します。IPV6形式のIPアドレスは、指定できません。 |
port1 | カンマ区切りで接続先のポート番号を指定します。 |
dbname | データベース名を指定します。 |
target_server | アプリケーションが接続するサーバの選択順を指定します。 |
sslmode | 通信を暗号化する場合に指定してください。デフォルトは無効に設定されています。 disable:非SSLで接続します。 allow:非SSLで接続し、失敗したらSSLで接続します。 prefer:SSLで接続し、失敗したら非SSLで接続します。 require:必ずSSLで接続します。 verify-ca:SSLで接続し、信頼できるCAから発行された証明書を使用します。(注) verify-full:SSLで接続し、信頼できるCAから発行された証明書を使用してサーバのホスト名が証明書と一致するかを検証します。(注) |
sslservercertcn | 本パラメータはSSL認証(sslmode=verify-full)を行う場合のみ、有効となります。 サーバ証明書のCN(Common Name)を指定します。省略した場合は、nullとなり、hostに指定されたホスト名を使用してサーバ証明書のCN(Common Name)を認証します。 |
注: “verify-ca”または“verify-full”を指定する場合、CA証明書ファイルをOSのシステム環境変数PGSSLROOTCERT(接続パラメータsslrootcert)で以下のように指定してください。
例)
変数名: PGSSLROOTCERT
変数値: CA証明書ファイル
ポイント
環境変数での設定することもできます。環境変数については、“10.2.5 C言語用ライブラリ(libpq)を利用する場合”を参照してください。
注意
接続パラメータconnect_timeoutを利用する場合には、指定した各ホストへの接続に対してconnect_timeoutが適用されます。多重化されているデータベースサーバの両方がダウンしている場合、接続がタイムアウトするまでには、connect_timeoutの2倍の時間がかかります。