「PostgreSQLインストールしたはずだけど、動いてる?」 「バージョンが分からない…」 「接続できないけど、そもそもインストールされてる?」
PostgreSQLのインストール確認は、 実は10種類以上の方法があるんです。
でも、どれを使えばいいか分からないですよね。
この記事では、 確実にPostgreSQLの状態を確認する方法を 優先順位付きで解説します!
5分後には、PostgreSQLの状態が 完璧に把握できるようになります。
【最速】3つのコマンドで即座に確認

1. psqlコマンドでバージョン確認(最も確実)
# PostgreSQLクライアントのバージョン確認
psql --version
# 出力例:
# psql (PostgreSQL) 15.3
# psql (PostgreSQL) 14.8 (Ubuntu 14.8-0ubuntu0.22.04.1)
コマンドが見つからない場合:
# パスを通していない可能性
/usr/bin/psql --version
/usr/lib/postgresql/15/bin/psql --version
# それでもダメなら未インストール
2. サービス状態の確認(動作確認)
# systemdを使用(Ubuntu 16.04+, CentOS 7+, Debian 8+)
sudo systemctl status postgresql
# 出力例:
# ● postgresql.service - PostgreSQL RDBMS
# Loaded: loaded (/lib/systemd/system/postgresql.service; enabled)
# Active: active (exited) since Mon 2024-01-15 10:00:00 JST
複数バージョンがある場合:
# バージョン別に確認
sudo systemctl status postgresql-15
sudo systemctl status postgresql-14
sudo systemctl status postgresql@15-main
3. プロセスの確認(実行中か確認)
# PostgreSQLプロセスを検索
ps aux | grep postgres
# 出力例:
# postgres 1234 0.0 0.3 293460 29132 ? Ss 10:00 0:00 /usr/lib/postgresql/15/bin/postgres -D /var/lib/postgresql/15/main
または
# pgrepコマンドを使用
pgrep -a postgres
ディストリビューション別の確認方法
Ubuntu/Debian系
# パッケージの確認
dpkg -l | grep postgresql
# 出力例:
# ii postgresql 15+248
# ii postgresql-15 15.3-0ubuntu0.22.04.1
# ii postgresql-client-15 15.3-0ubuntu0.22.04.1
# ii postgresql-common 248
# より詳細な情報
apt list --installed | grep postgresql
# どのバージョンが利用可能か
apt-cache policy postgresql
CentOS/RHEL/Rocky Linux/AlmaLinux
# RPMパッケージの確認
rpm -qa | grep postgresql
# 出力例:
# postgresql15-server-15.3-1PGDG.rhel8.x86_64
# postgresql15-15.3-1PGDG.rhel8.x86_64
# yumでの確認
yum list installed | grep postgresql
# dnf(CentOS 8以降)
dnf list installed postgresql*
Fedora
# dnfで確認
dnf list installed postgresql*
# 詳細情報
dnf info postgresql-server
Arch Linux
# pacmanで確認
pacman -Q | grep postgresql
# 詳細情報
pacman -Qi postgresql
openSUSE
# zypperで確認
zypper se --installed postgresql
# rpmでも確認可能
rpm -qa | grep postgresql
データベースサーバーの詳細確認
PostgreSQLサーバーのバージョン確認
# サーバーに接続してバージョン確認
sudo -u postgres psql -c "SELECT version();"
# 出力例:
# PostgreSQL 15.3 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0, 64-bit
# より簡潔に
sudo -u postgres psql -c "SHOW server_version;"
# 出力例:
# 15.3
設定ファイルの場所確認
# 設定ファイルの場所を表示
sudo -u postgres psql -c "SHOW config_file;"
# 出力例:
# /etc/postgresql/15/main/postgresql.conf
# データディレクトリの場所
sudo -u postgres psql -c "SHOW data_directory;"
# 出力例:
# /var/lib/postgresql/15/main
ポートとネットワーク接続の確認
リスニングポートの確認
# PostgreSQLが待ち受けているポート確認
sudo ss -tlnp | grep postgres
# 出力例:
# LISTEN 0 244 127.0.0.1:5432 0.0.0.0:* users:(("postgres",pid=1234,fd=7))
# または
sudo netstat -tlnp | grep postgres
# lsofを使用
sudo lsof -i :5432
複数インスタンスの確認
# 複数のPostgreSQLが動いている場合
sudo ss -tlnp | grep postgres
# 出力例:
# LISTEN 0 244 *:5432 *:* users:(("postgres",pid=1234))
# LISTEN 0 244 *:5433 *:* users:(("postgres",pid=5678))
インストールパスと実行ファイルの確認
実行ファイルの場所
# postgresコマンドの場所
which postgres
which psql
which pg_ctl
# 出力例:
# /usr/lib/postgresql/15/bin/postgres
# /usr/bin/psql
# /usr/lib/postgresql/15/bin/pg_ctl
# すべてのpostgres関連コマンド
whereis postgresql
whereis postgres
whereis psql
# findコマンドで徹底検索
sudo find / -name "postgres" -type f 2>/dev/null
sudo find / -name "psql" -type f 2>/dev/null
ライブラリの確認
# PostgreSQL関連ライブラリ
ldconfig -p | grep libpq
# 出力例:
# libpq.so.5 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libpq.so.5
データベースクラスタの確認

既存のデータベース一覧
# データベース一覧を表示
sudo -u postgres psql -l
# 出力例:
# List of databases
# Name | Owner | Encoding | Collate | Ctype | Access privileges
# -----------+----------+----------+---------+-------+-------------------
# postgres | postgres | UTF8 | C.UTF-8 | C.UTF-8 |
# template0 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres
# template1 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres
クラスタの状態確認
# pg_ctlを使用した確認
sudo -u postgres pg_ctl status -D /var/lib/postgresql/15/main
# 出力例:
# pg_ctl: server is running (PID: 1234)
# /usr/lib/postgresql/15/bin/postgres "-D" "/var/lib/postgresql/15/main"
# クラスタのバージョン確認
sudo -u postgres pg_controldata /var/lib/postgresql/15/main | grep "pg_control version"
ログファイルの確認
エラーログの場所
# Ubuntu/Debian
sudo tail -f /var/log/postgresql/postgresql-15-main.log
# CentOS/RHEL
sudo tail -f /var/lib/pgsql/15/data/log/postgresql-*.log
# または設定から確認
sudo -u postgres psql -c "SHOW log_directory;"
sudo -u postgres psql -c "SHOW log_filename;"
systemdジャーナルログ
# 最近のログ
sudo journalctl -u postgresql -n 50
# リアルタイムログ
sudo journalctl -u postgresql -f
# 特定時間のログ
sudo journalctl -u postgresql --since "1 hour ago"
接続テスト
ローカル接続テスト
# postgresユーザーで接続
sudo -u postgres psql
# 特定のデータベースに接続
sudo -u postgres psql -d postgres
# 別ユーザーで接続(要設定)
psql -U myuser -d mydatabase -h localhost
リモート接続テスト
# 外部から接続可能か確認
psql -h サーバーIP -U postgres -d postgres
# ポート指定
psql -h localhost -p 5432 -U postgres
# 接続文字列での接続
psql postgresql://postgres@localhost:5432/postgres
pg_isreadyコマンド
# PostgreSQLサーバーが接続を受け付ける準備ができているか確認
pg_isready
# 出力例:
# /var/run/postgresql:5432 - accepting connections
# ホストとポート指定
pg_isready -h localhost -p 5432
トラブルシューティング用確認
メモリとディスク使用量
# PostgreSQL関連プロセスのメモリ使用量
ps aux | grep postgres | awk '{sum+=$6} END {print "Total RSS: " sum/1024 " MB"}'
# データディレクトリのサイズ
sudo du -sh /var/lib/postgresql/
# 各データベースのサイズ
sudo -u postgres psql -c "SELECT pg_database.datname, pg_size_pretty(pg_database_size(pg_database.datname)) AS size FROM pg_database;"
権限の確認
# データディレクトリの権限
ls -la /var/lib/postgresql/
# 設定ファイルの権限
ls -la /etc/postgresql/
# postgresユーザーの確認
id postgres
完全なヘルスチェックスクリプト
#!/bin/bash
# postgresql_health_check.sh
echo "=== PostgreSQL Health Check ==="
echo ""
echo "1. Version Check:"
psql --version 2>/dev/null || echo "psql not found in PATH"
echo ""
echo "2. Service Status:"
sudo systemctl status postgresql --no-pager | head -n 5
echo ""
echo "3. Running Processes:"
pgrep -a postgres | head -n 5
echo ""
echo "4. Listening Ports:"
sudo ss -tlnp | grep postgres
echo ""
echo "5. Database List:"
sudo -u postgres psql -l 2>/dev/null | head -n 10
echo ""
echo "6. Connection Test:"
pg_isready
echo ""
echo "7. Disk Usage:"
sudo du -sh /var/lib/postgresql/ 2>/dev/null
echo ""
echo "8. Recent Logs:"
sudo journalctl -u postgresql -n 5 --no-pager
echo ""
echo "=== Check Complete ==="
インストールされていない場合の対処
クイックインストールコマンド
Ubuntu/Debian:
sudo apt update
sudo apt install postgresql postgresql-contrib
CentOS/RHEL 8+:
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo dnf -y install postgresql15-server
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb
Arch Linux:
sudo pacman -S postgresql
sudo -u postgres initdb -D /var/lib/postgres/data
まとめ:状況別確認コマンド
「動いてるか知りたい」
sudo systemctl status postgresql
「バージョンを知りたい」
psql --version
「接続できるか確認したい」
pg_isready
「詳細な状態を知りたい」
sudo -u postgres psql -c "SELECT version();"
「ログを見たい」
sudo journalctl -u postgresql -f
これらのコマンドを使いこなせば、 PostgreSQLの状態を完璧に把握できます。
トラブルシューティングの第一歩は、 正確な状態確認から始まります!
PostgreSQLの確認で困ったことがあれば、ぜひ質問してください。みんなで解決策を共有しましょう!
コメント