30.12. 環境変数

以下の環境変数を使用して、呼び出し側のプログラムで直接値を指定しなかった場合の接続パラメータのデフォルト値を選ぶことができます。 この値は、PQconnectdbPQsetdbLoginおよび、PQsetdb で使用されます。 例えば、簡単なクライアントアプリケーションでは、データベース接続情報を直接プログラムに記述しない方が便利です。

  • PGHOSTはデータベースサーバ名を設定します。 スラッシュで始まる場合はTCP/IP通信ではなく、Unixドメインソケット通信を指定したものになります。 この時の値はソケットファイルが格納されるディレクトリ名です(デフォルトのインストール時の設定では/tmpです)。

  • PGHOSTADDRは、データベースサーバの数字で表したIPアドレスを指定します。 PGHOSTの代わりに設定して、または、PGHOSTに追加して、DNS検索に要するオーバヘッドをなくすことができます。 この相互作用についての詳細は、パラメータについての文書、上述のPQconnectdbを参照してください。

    PGHOSTPGHOSTADDRも設定されていない場合のデフォルトの動作は、ローカルなUnixドメインソケットに接続することです。 ただし、Unixドメインソケットを持たないマシンでは、libpqlocalhostへの接続を試みます。

  • PGPORTは、PostgreSQLサーバと通信するためのデフォルトのTCPポート番号、またはUnixドメインソケットファイルの拡張子を設定します。

  • PGDATABASEは、PostgreSQLデータベース名を設定します。

  • PGUSERは、データベースへの接続に使われるユーザ名を設定します。

  • PGPASSWORDは、バックエンドがパスワード認証を要求した場合に使われるパスワードを設定します。 この環境変数は、セキュリティ上の理由(いくつかのオペレーティングシステムではroot以外のユーザがpsコマンド経由で環境変数を見ることができるため)から現在では推奨されていません。 代わりに~/.pgpassを使用することを検討してください。 (項30.13を参照してください。)

  • パスワードファイルの名前を指定します。指定していなければ、デフォルトの ~/.pgpass となります。(詳しくは 項30.13 を参照してください)。

  • PGSERVICEpg_service.conf内で検索されるサービス名を設定します。 これは、全てのパラメータ設定を簡易化する方法を提供します。

  • PGREALMは、PostgreSQLで使用するKerberosのレルムがローカルのものと異なる場合に、そのレルムを設定します。 PGREALMが設定されると、libpqアプリケーションは設定されたレルム用のサーバと認証を行い、また、別のチケットファイルを使って、ローカルのチケットファイルと競合しないようにします。 この環境変数は、サーバがKerberosによる認証を選択した場合にのみ使われます。

  • PGOPTIONSは、PostgreSQLサーバ用の付加的な実行時オプションを設定します。

  • PGSSLMODEは、サーバとのSSL接続用の調整を行うかどうか、および、その際の優先順位を決定します。 4つのモードがあります。 disableは、暗号化しないSSL接続のみを試みます。 allowでの調停は、まず非SSL接続が試みられ、失敗した場合にSSL接続を試みます。 prefer(デフォルト)での調停は、まずSSL接続が試みられ、失敗した場合に通常の非SSLを試みます。 requireでは、SSLのみが試みられます。 PostgreSQLがSSLサポートなしでコンパイルされている時に requireを使用するとエラーになります。 allowpreferオプションは受け付けられますが、実際にはlibpqSSL接続を試みません。

  • PGREQUIRESSLSSL経由の接続が必須か否かを指定します。 "1"と指定すると、サーバがSSL接続を受け付けない場合にlibpq は接続を拒絶します。 (sslmode prefer と同じです。) このオプションはsslmodeにより廃れたものになり、また、SSLサポート付きでPostgreSQLがコンパイルされた場合にのみ利用できます。

  • PGSSLKEYは、クライアント証明書に対する秘密キーを格納するハードウェアトークンを指定します。 この変数の値は、エンジン名(エンジンとはOpenSSLの読み込み可能なモジュールです)とエンジン固有のキー識別子をコロンで区切ったものから構成されなければなりません。 これが設定されていない場合、秘密キーはファイルに保管されていなければなりません。

  • PGKRBSRVNAMEは、認証にKerberos 5またはGSSAPIを利用している場合に使われるKerberosサービス名を指定します。

  • PGGSSLIBは、GSSAPI認証で使用されるGSSライブラリを指定します。

  • PGCONNECT_TIMEOUTは、libpqPostgreSQLサーバへの接続確立を待つ、最大秒数を指定します。 未設定、もしくは、ゼロに設定した場合、libpqは永久に待機します。 この待機時間は2秒未満に設定することは非推奨です。

以下の環境変数を使用して、PostgreSQLセッション毎のデフォルト動作を指定することができます。 (また、ユーザ毎、もしくは、データベース毎を単位としたデフォルト動作の設定方法についてはALTER USERおよびALTER DATABASEコマンドを参照してください。)

  • PGDATESTYLE sets the default style of date/time representation. (Equivalent to SET datestyle TO ....) --> PGDATESTYLE は、デフォルトの日付/時刻表現形式を設定します。 (SET datestyle TO ...と等価です。)

  • PGTZ はデフォルトの時間帯を設定します。 (SET timezone TO ...と等価です。)

  • PGCLIENTENCODING は、デフォルトのクライアントの文字セット符号化方式を指定します。 (SET client_encoding TO ...と等価です。)

  • --> PGGEQO は、遺伝的問い合わせオブティマイザのデフォルトのモードを設定します。 (SET geqo TO ...と等価です。)

これらの環境変数の正確な値については、SET SQLコマンドを参照してください。

以下の環境変数は、libpqの内部動作を決定します。 これらはコンパイル時のデフォルトを上書きします。

  • PGSYSCONFDIRは、pg_service.confファイルがあるディレクトリを設定します。

  • PGLOCALEDIRは、国際化メッセージ用のlocaleファイルがあるディレクトリを設定します。