ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|---|
|
pg_hba.conf とは
PostgreSQL のクライアント認証ルールを記述するファイル (Host-Based Authentication)。「どのクライアント (IP) からどのユーザがどのデータベースに、どの認証方式でアクセス可能か」を定義します。
# pg_hba.conf の例
# TYPE DATABASE USER ADDRESS METHOD
local all all peer
host all all 127.0.0.1/32 scram-sha-256
host all all ::1/128 scram-sha-256
host mydb app 192.168.1.0/24 scram-sha-256
host all all 0.0.0.0/0 reject # 危険、参考のみ
変更を反映する 3 つの方法
方法 1: SQL でリロード(推奨・再起動不要)
-- psql で接続して実行
$ psql -U postgres
postgres=# SELECT pg_reload_conf();
pg_reload_conf
----------------
t
(1 row)
-- 結果が t (true) ならリロード成功
-- f (false) ならファイル構文エラー、ログ確認
方法 2: pg_ctl reload(コマンドライン)
# PostgreSQL データディレクトリを指定
$ sudo -u postgres pg_ctl reload -D /var/lib/postgresql/15/main
server signaled
# データディレクトリ不明な場合
$ sudo -u postgres pg_ctl reload
方法 3: systemd で reload
# Ubuntu/Debian
$ sudo systemctl reload postgresql
$ sudo systemctl reload postgresql@15-main # バージョン別
# CentOS/RHEL
$ sudo systemctl reload postgresql-15
# 確認
$ sudo systemctl status postgresql
変更が反映されているか確認
-- 現在の認証設定を確認 (PostgreSQL 10+)
postgres=# SELECT * FROM pg_hba_file_rules;
line_number | type | database | user_name | address | netmask | auth_method | options | error
-------------+-------+----------+-----------+-----------+----------------------------+-------------+---------+-------
84 | local | {all} | {all} | | | peer | |
86 | host | {all} | {all} | 127.0.0.1 | 255.255.255.255 | scram-sha-256 | |
88 | host | {all} | {all} | ::1 | ffff:ffff:ffff:ffff:... | scram-sha-256 | |
(3 rows)
-- error カラムが NULL でなければ構文エラー
-- 現在の hba ファイルパス
postgres=# SHOW hba_file;
hba_file
-------------------------
/etc/postgresql/15/main/pg_hba.conf
pg_hba.conf の主要要素
① TYPE(接続方式)
| TYPE | 意味 |
|---|---|
local | Unix ソケット接続(同一マシン内のみ) |
host | TCP/IP(SSL あり/なし問わず) |
hostssl | SSL 接続のみ |
hostnossl | 非 SSL 接続のみ |
hostgssenc | GSSAPI 暗号化のみ (12+) |
② METHOD(認証方式)
| METHOD | 意味 |
|---|---|
trust | 認証なし(開発のみ、本番禁止) |
reject | 常に拒否 |
scram-sha-256 | パスワード認証(推奨、PostgreSQL 10+) |
md5 | 古いパスワード認証(非推奨) |
password | 平文パスワード(非推奨、SSL 必須) |
peer | OS ユーザ名と一致確認 (local のみ) |
ident | ident 経由のユーザ確認 |
cert | SSL クライアント証明書認証 |
ldap | LDAP サーバで認証 |
radius | RADIUS 認証 |
よくある設定例
例 1: 開発環境(緩い)
# 開発用 - 全許可 (本番で絶対禁止)
local all all trust
host all all 127.0.0.1/32 trust
host all all ::1/128 trust
例 2: 本番環境(厳格)
# 本番用
local all postgres peer
local all all scram-sha-256
host all all 127.0.0.1/32 scram-sha-256
host all all ::1/128 scram-sha-256
# アプリサーバから特定 DB のみ許可
hostssl mydb app_user 10.0.1.0/24 scram-sha-256
# レプリケーション用
host replication repl_user 10.0.1.10/32 scram-sha-256
# その他は明示的に拒否
host all all 0.0.0.0/0 reject
リモート接続を許可する手順
- listen_addresses 設定:
postgresql.confで TCP リッスンを有効化(下記) - pg_hba.conf に許可ルール追加(下記)
- リロード:
SELECT pg_reload_conf(); - ファイアウォール: 5432 を許可(下記)
① postgresql.conf
# postgresql.conf
listen_addresses = '*' # または '192.168.1.10' 特定 IP のみ
port = 5432
# 反映には PostgreSQL 再起動が必要
$ sudo systemctl restart postgresql
② pg_hba.conf
# pg_hba.conf
host mydb app 192.168.1.0/24 scram-sha-256
④ ファイアウォール
$ sudo ufw allow from 192.168.1.0/24 to any port 5432
トラブルシュート
接続エラー: FATAL: no pg_hba.conf entry for host
pg_hba.conf にそのクライアント IP のルールがない:
# 適切なルールを追加
host mydb app 192.168.1.50/32 scram-sha-256
# 反映
SELECT pg_reload_conf();
接続エラー: FATAL: password authentication failed
- パスワードが違う
- scram-sha-256 と md5 の不一致 (PostgreSQL 14+ はデフォルト scram)
SELECT rolname, rolpassword FROM pg_authid;で確認
リロードが効かない
-- ファイル構文エラー確認
SELECT * FROM pg_hba_file_rules WHERE error IS NOT NULL;
-- ログ確認
$ tail -f /var/log/postgresql/postgresql-15-main.log
関連記事
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
同階層のページ
同階層のページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- 【django】ログイン 認証機能 2026-09-08 03:22:09
- MySQL ERROR 1063 Incorrect column specifier for column|原因と直し方 2026-09-08 03:11:09
- 【PHPエラー】Object of class stdClass could not be converted to string 2026-09-07 07:46:04
- Julia Genie ローカル開発サーバ起動完全ガイド 2026-09-07 07:46:04
- Wi-Fi とは|規格と世代(Wi-Fi 4〜7)・周波数帯・CSMA/CA・WPA3 NEW 2026-09-07 07:45:13
- set コマンドでシェルオプションと位置パラメータを操作 | bash 2026-09-07 07:45:13
- JPEG(.jpg/.jpeg)画像形式の完全ガイド — 仕様・マジックナンバー・他形式との比較・EXIF 2026-09-07 07:45:13
- UE5 Get Overlapping Actorsで特定クラスだけ処理|Class Filter・Cast To 2026-09-07 07:45:13
- Linuxで特定拡張子のファイルを再帰削除|find -deleteの安全手順 2026-09-07 07:45:13
- Django CBVでテンプレートに値を渡す|get_context_data・extra_context 2026-09-07 07:45:13
- Linuxで複数ファイルの文字列を一括置換|find・sed・xargsの安全手順 2026-09-07 07:45:13
- Laravelルートグループ|prefix・middleware・nameで一括管理 2026-09-07 07:45:13
- Linux whichコマンドの使い方|絶対パス取得とtype・command -vの違い 2026-09-07 07:45:13
- Linux catコマンドの使い方|行番号表示・複数ファイル連結 2026-09-07 07:45:13
- unable to execute 'gcc': No such file or directory 2026-09-07 07:45:13
コメントを削除してもよろしいでしょうか?