PostgreSQLインストール確認完全ガイド!Linuxで動作確認する10の方法

データベース・SQL

「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の確認で困ったことがあれば、ぜひ質問してください。みんなで解決策を共有しましょう!

コメント

タイトルとURLをコピーしました