ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子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 と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- EJS 完全ガイド — Node.js テンプレートエンジン 2026-05-18 01:50:54
- jQuery HTML/CSS 操作完全ガイド — DOM 操作の決定版 2026-05-18 01:50:54
- Vue.js でナビゲーションの現在ページをハイライトする方法 2026-05-18 01:50:54
- JavaScript のみで form を POST 送信する方法完全ガイド 2026-05-18 01:50:54
- jQuery 概要と現代の代替フレームワーク完全ガイド 2026-05-18 01:50:54
- Laravel バリデーションの日本語化完全ガイド 2026-05-18 01:50:54
- Laravel Artisan コマンド一覧完全リファレンス 2026-05-18 01:50:54
- Laravel ルート認証化完全ガイド — middleware と Gate 2026-05-18 01:50:54
- jQuery の導入方法完全ガイド — CDN/npm/Webpack 2026-05-18 01:50:54
- Laravel メンテナンスモード完全ガイド 2026-05-18 01:50:54
- Laravel Query Builder の集約関数 (count/max/avg) 完全ガイド 2026-05-18 01:50:53
- SQL LIMIT 句完全ガイド — ページネーションと挙動 2026-05-18 01:50:53
- Django Model の定義方法完全ガイド — フィールド型と Meta 2026-05-18 01:50:53
- DB インデックスの再作成方法完全ガイド 2026-05-18 01:50:53
- Django マイグレーションファイル作成完全ガイド 2026-05-18 01:50:53
コメントを削除してもよろしいでしょうか?