6 サーバアプリケーション(解説)
6.2 設定ファイルとパラメータ
PostgreSQLのサーバは、起動時に各種のパラメータが記述された設定ファイルを読み込みます。一部のパラメータは、起動後に一時的に変更できます。この節では、重要な設定ファイルであるpostgresql.confとpg_hba.conf、パラメータの設定と表示を行うSQL文であるSETとSHOWについて説明します。
postgresql.conf
postgresql.confファイルは、PostgreSQLサーバの動作に必要な各種パラメータの設定を行うファイルです。ファイルはテキストファイルで、以下の方法でパラメータを記述します。
- 1行毎に1つのパラメータを指定する
- パラメータの名前と値は、空白または等号で区切る
- ハッシュ記号(#)は、以降行末までコメントであることを意味する
- 単純でない識別子、または数値でないパラメータ値は一重引用符で括る
- 数値の単位は以下を使用する
大きさ: B(バイト)、kB(キロバイト)、MB(メガバイト)、GB(ギガバイト)、TB(テラバイト)
時間: us(マイクロ秒)、ms(ミリ秒)、s(秒)、min(分)、h(時間)、d(日数)
設定できる主なパラメータを以下に示します。
パラメータ | 省略値 | 説明 |
---|---|---|
data_directory | ConfigDir | データベースクラスタのディレクトリ |
listen_addresses | localhost | サーバが監視するIPアドレス(*は全てのホスト) |
port | 5432 | サーバが監視するポート番号 |
max_connections | 100 | データベースサーバに同時接続できる最大数 |
authentication_timeout | 1min | クライアント認証を完了するまでの最大時間 |
password_encryption | scram-sha-256 | パスワードを暗号化するアルゴリズム |
shared_buffers | 128MB | 共有メモリバッファのために使用するメモリ量 |
temp_buffers | 8MB | 一時バッファの最大メモリ量 |
wal_level | replica | WALに書かれる情報量(minimal<replica<logical) |
log_destination | stderr | サーバメッセージのログ出力先 |
autovacuum | on | 自動バキューム機能を有効にするかどうか |
datestyle | ISO, YMD | 日付・時刻の入力・表示形式 |
timezone | Asia/Tokyo | 表示用およびタイムスタンプ解釈用の時間帯 |
実際のpostgresql.confファイルの一部を以下に示します。
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
#listen_addresses = 'localhost' # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost'; use '*' for all
# (change requires restart)
#port = 5432 # (change requires restart)
max_connections = 100 # (change requires restart)
#superuser_reserved_connections = 3 # (change requires restart)
#unix_socket_directories = '/var/run/postgresql, /tmp' # comma-separated list of directories
# (change requires restart)
'change requires restart'と記載されているパラメータを変更したときは、サーバのreloadではなく、restartが必要です。
pg_hba.conf
pg_hba.confファイルは、クライアントの認証方法を設定します。ファイルは単純なテキストファイルで、以下の方法で認証方法を記述します。
- 1行毎に1つの認証方法を指定する
- 認証方法は原則として、接続方式、データベース、ユーザ、ホスト、認証方法の組み合わせで指定する
- ファイルの先頭から条件を判定していき、最初に条件が合致した認証方法でクライアントを認証する
- ハッシュ記号(#)は、以降行末までコメントであることを意味する
設定できる主なパラメータを以下に示します。
パラメータ | 意味 | 設定可能な値 |
---|---|---|
TYPE | 接続方式 | local | host | hostssl |
DATABASE | データベース名 | all | 名前 |
USER | ユーザ名 | all | 名前 |
ADDRESS | IPアドレス | all | 0.0.0.0/0 | CIDR表記アドレス |
METHOD | 認証方法 | peer | ident | scram-sha-256 | trust |
postgresql.confファイルの例を以下に示します。
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all postgres peer
# IPv4 local connections:
host ossdb all 127.0.0.1/32 scram-sha-256
host all all 127.0.0.1/32 ident
# IPv6 local connections:
host all all ::1/128 ident
上記の例で、IPv4のローカル接続の場合、ossdbデータベースではscram-sha-256で暗号化されたパスワード認証が行われ、それ以外のデータベースではOSのユーザ名によるident認証が行われます。
SET文
SET文は、postgresql.confファイル等で設定されている実行時のパラメータを一時的に変更します。形式は以下の通りです。
SET [SESSION | LOCAL] パラメータ名 {TO | =} {値 | DEFAULT}
- SESSIONは現行セッション内での変更、LOCALは現行トランザクション内での変更となります。省略時はSESSIONです。
- パラメータ名は、変更するパラメータの名前です。SET文では変更できないパラメータもあります。
- 値は、変更後のパラメータの値です。DEFAULTはSET文実行前の値に再設定します。
例えば、以下のSET文は日付のスタイルを伝統的なSQL形式変更します。
SET datestyle TO sql;
伝統的なSQL形式では、月/日/年 の表示になります。
SHOW文
SHOW文は、postgresql.confファイル等で設定されている実行時のパラメータを表示します。形式は以下の通りです。
SHOW {パラメータ名 | ALL}
- パラメータ名は、表示するパラメータの名前です。ALLを指定するとすべてのパラメータが表示されます。
例えば、以下のSHOW文は現在のタイムゾーンを表示します。
SHOW timezone;