PostgreSQL Linux完全アンインストールガイド – データも設定も残さず削除する方法

データベース・SQL

「PostgreSQLを完全にアンインストールしたい」

「設定ファイルやデータも全て削除したい」

「別バージョンをクリーンインストールしたい」

「残存ファイルのせいで再インストールがうまくいかない」

こんな状況を解決します!

PostgreSQLのアンインストールは、パッケージの削除だけでは不完全です。

データベースファイル、設定ファイル、ユーザーアカウントなど、様々な要素を適切に削除する必要があります。

この記事では、Linux環境でPostgreSQLを完全にアンインストールする方法を、ディストリビューション別に詳しく解説していきます!

スポンサーリンク

重要:アンインストール前の必須確認事項

データのバックアップ

# 全データベースのバックアップ(必要な場合のみ)
sudo -u postgres pg_dumpall > ~/postgresql_backup_$(date +%Y%m%d).sql

# 特定のデータベースのみバックアップ
sudo -u postgres pg_dump database_name > ~/database_backup.sql

# 設定ファイルのバックアップ
sudo cp -r /etc/postgresql ~/postgresql_config_backup
sudo cp -r /var/lib/postgresql ~/postgresql_data_backup

現在の状態確認

# PostgreSQLのバージョン確認
psql --version

# インストールされているパッケージ確認
dpkg -l | grep postgres     # Ubuntu/Debian
rpm -qa | grep postgres      # CentOS/RHEL

# 実行中のプロセス確認
ps aux | grep postgres

# 使用中のポート確認
sudo netstat -tlnp | grep 5432
sudo lsof -i :5432

# データディレクトリの場所確認
sudo -u postgres psql -c "SHOW data_directory;"

Ubuntu/Debian系でのアンインストール

ステップ1:サービスの停止

# PostgreSQLサービスの停止
sudo systemctl stop postgresql
sudo systemctl stop postgresql.service

# 自動起動の無効化
sudo systemctl disable postgresql

# 全バージョンのサービス停止(複数バージョンがある場合)
sudo systemctl stop postgresql*

ステップ2:パッケージの削除

# PostgreSQL関連パッケージを全て削除
sudo apt-get --purge remove postgresql*

# より詳細な削除
sudo apt-get --purge remove postgresql postgresql-* 

# 設定ファイルも含めて完全削除
sudo apt-get purge postgresql postgresql-client postgresql-common postgresql-contrib

# 特定バージョンの削除(例:PostgreSQL 15)
sudo apt-get --purge remove postgresql-15 postgresql-client-15 postgresql-contrib-15

ステップ3:残存ファイルの削除

# データディレクトリの削除(重要データなので要注意!)
sudo rm -rf /var/lib/postgresql/

# 設定ファイルの削除
sudo rm -rf /etc/postgresql/

# ログファイルの削除
sudo rm -rf /var/log/postgresql/

# ソケットファイルの削除
sudo rm -rf /var/run/postgresql/

# キャッシュの削除
sudo rm -rf /var/cache/postgresql/

ステップ4:ユーザーとグループの削除

# postgresユーザーの削除
sudo deluser postgres

# postgresグループの削除
sudo delgroup postgres

# ユーザーのホームディレクトリも削除
sudo rm -rf /home/postgres

ステップ5:依存パッケージのクリーンアップ

# 不要になった依存パッケージの削除
sudo apt-get autoremove

# パッケージキャッシュのクリア
sudo apt-get autoclean
sudo apt-get clean

# dpkgデータベースの更新
sudo dpkg --configure -a

CentOS/RHEL/Rocky Linuxでのアンインストール

ステップ1:サービスの停止

# PostgreSQLサービスの停止
sudo systemctl stop postgresql
sudo systemctl stop postgresql-15  # バージョン指定

# 自動起動の無効化
sudo systemctl disable postgresql

# 古いバージョン(CentOS 6以前)
sudo service postgresql stop
sudo chkconfig postgresql off

ステップ2:パッケージの削除

# YUMを使用した削除(CentOS 7/RHEL 7)
sudo yum remove postgresql*

# DNFを使用した削除(CentOS 8/RHEL 8以降)
sudo dnf remove postgresql*

# 完全削除(設定ファイル含む)
sudo yum remove postgresql postgresql-server postgresql-contrib postgresql-libs

# 特定バージョンの削除
sudo yum remove postgresql15 postgresql15-server postgresql15-contrib

ステップ3:残存ファイルの削除

# データディレクトリの削除
sudo rm -rf /var/lib/pgsql/

# 設定ファイルの削除
sudo rm -rf /etc/postgresql/
sudo rm -rf /etc/sysconfig/pgsql/

# ログファイルの削除
sudo rm -rf /var/log/postgresql/
sudo rm -rf /var/log/pgsql/

# その他のディレクトリ
sudo rm -rf /usr/pgsql-*/
sudo rm -rf /usr/share/pgsql/

ステップ4:ユーザーとグループの削除

# postgresユーザーの確認
id postgres

# ユーザーとグループの削除
sudo userdel postgres
sudo groupdel postgres

# ユーザーのホームディレクトリも削除
sudo userdel -r postgres  # -r オプションでホームディレクトリも削除

ステップ5:SELinuxコンテキストのクリア(必要な場合)

# SELinuxのPostgreSQL関連設定を確認
sudo semanage port -l | grep postgres

# PostgreSQL用のポート設定を削除
sudo semanage port -d -t postgresql_port_t -p tcp 5432

# SELinuxのコンテキストをリセット
sudo restorecon -Rv /var/lib/
sudo restorecon -Rv /etc/

Fedoraでのアンインストール

# サービス停止
sudo systemctl stop postgresql
sudo systemctl disable postgresql

# パッケージ削除
sudo dnf remove postgresql postgresql-server postgresql-contrib

# 完全削除
sudo dnf remove postgresql*

# 残存ファイル削除
sudo rm -rf /var/lib/pgsql/
sudo rm -rf /etc/postgresql/
sudo rm -rf /var/log/postgresql/

# ユーザー削除
sudo userdel -r postgres

Arch Linux/Manjaroでのアンインストール

# サービス停止
sudo systemctl stop postgresql
sudo systemctl disable postgresql

# パッケージ削除
sudo pacman -Rns postgresql

# 設定ファイルも含めて削除
sudo pacman -Rnscu postgresql

# 残存ファイル削除
sudo rm -rf /var/lib/postgres/
sudo rm -rf /etc/postgresql/

# ユーザー削除
sudo userdel postgres

ソースからインストールした場合のアンインストール

makeでインストールした場合

# インストールディレクトリへ移動
cd /path/to/postgresql-source

# アンインストール(Makefileが残っている場合)
sudo make uninstall

# 手動削除が必要な場合
sudo rm -rf /usr/local/pgsql/
sudo rm -rf /usr/local/bin/postgres
sudo rm -rf /usr/local/bin/psql
sudo rm -rf /usr/local/bin/pg_*
sudo rm -rf /usr/local/share/postgresql/
sudo rm -rf /usr/local/include/postgresql/

環境変数のクリーンアップ

# .bashrcや.bash_profileから削除
nano ~/.bashrc

# 以下の行を削除またはコメントアウト
# export PATH=/usr/local/pgsql/bin:$PATH
# export LD_LIBRARY_PATH=/usr/local/pgsql/lib:$LD_LIBRARY_PATH
# export PGDATA=/usr/local/pgsql/data

# 環境変数の反映
source ~/.bashrc

Dockerコンテナの場合

# 実行中のPostgreSQLコンテナ確認
docker ps | grep postgres

# コンテナの停止と削除
docker stop postgres_container
docker rm postgres_container

# PostgreSQLイメージの削除
docker rmi postgres:latest
docker rmi postgres:15

# ボリュームの削除(データも削除される)
docker volume rm postgres_data

# 全てのPostgreSQL関連を削除
docker rm $(docker ps -a | grep postgres | awk '{print $1}')
docker rmi $(docker images | grep postgres | awk '{print $3}')
docker volume prune  # 未使用ボリュームを削除

複数バージョンが混在する場合

# インストールされているバージョンを確認
ls -la /usr/lib/postgresql/
ls -la /etc/postgresql/

# 各バージョンのサービスを停止
sudo systemctl stop postgresql@13-main
sudo systemctl stop postgresql@14-main
sudo systemctl stop postgresql@15-main

# 特定バージョンのみ削除(Ubuntu/Debian)
sudo apt-get --purge remove postgresql-13 postgresql-client-13
sudo rm -rf /etc/postgresql/13/
sudo rm -rf /var/lib/postgresql/13/

# 全バージョン一括削除
for version in 13 14 15; do
    sudo apt-get --purge remove postgresql-$version postgresql-client-$version
    sudo rm -rf /etc/postgresql/$version/
    sudo rm -rf /var/lib/postgresql/$version/
done

完全削除の確認

削除確認チェックリスト

# 1. パッケージの確認
dpkg -l | grep postgres     # Ubuntu/Debian
rpm -qa | grep postgres      # CentOS/RHEL

# 2. プロセスの確認
ps aux | grep postgres
pgrep postgres

# 3. ポートの確認
sudo netstat -tlnp | grep 5432
sudo lsof -i :5432

# 4. ディレクトリの確認
ls -la /var/lib/postgresql/
ls -la /etc/postgresql/
ls -la /usr/lib/postgresql/
ls -la /usr/share/postgresql/

# 5. ユーザーの確認
id postgres
grep postgres /etc/passwd
grep postgres /etc/group

# 6. systemdサービスの確認
systemctl list-units | grep postgres
systemctl list-unit-files | grep postgres

# 7. 残存ファイルの検索
sudo find / -name "*postgres*" 2>/dev/null | grep -v "/proc"
sudo locate postgres  # updatedbが必要

# 8. 共有ライブラリの確認
ldconfig -p | grep postgres

トラブルシューティング

エラー1:パッケージが削除できない

# エラー: "E: Unable to locate package"
# 解決:パッケージ名を正確に確認
apt-cache search postgresql | grep postgresql

# エラー: "dpkg: error processing package"
# 解決:強制削除
sudo dpkg --remove --force-remove-reinstreq postgresql
sudo apt-get clean
sudo apt-get update

# エラー: "Package is in use"
# 解決:依存関係を確認して削除
sudo apt-get -f install
sudo apt-get --fix-broken install

エラー2:ファイルが削除できない

# "Permission denied"エラー
# 解決:root権限で実行
sudo rm -rf /var/lib/postgresql/

# "Device or resource busy"エラー
# 解決:使用中のプロセスを確認して停止
sudo lsof | grep postgresql
sudo fuser -k /var/lib/postgresql

# ファイルシステムがread-onlyの場合
sudo mount -o remount,rw /

エラー3:ユーザーが削除できない

# "user postgres is currently used by process"
# 解決:postgresユーザーのプロセスを全て停止
sudo pkill -u postgres
sudo killall -u postgres

# 強制的にユーザー削除
sudo userdel -f postgres

再インストールの準備

クリーンな状態の確認

# 完全削除確認スクリプト
#!/bin/bash

echo "=== PostgreSQL完全削除チェック ==="

# パッケージチェック
if dpkg -l | grep -q postgres || rpm -qa | grep -q postgres; then
    echo "❌ PostgreSQL パッケージが残っています"
else
    echo "✅ パッケージは削除されています"
fi

# プロセスチェック
if ps aux | grep -q [p]ostgres; then
    echo "❌ PostgreSQL プロセスが実行中です"
else
    echo "✅ プロセスは停止しています"
fi

# ディレクトリチェック
dirs=("/var/lib/postgresql" "/etc/postgresql" "/usr/lib/postgresql")
for dir in "${dirs[@]}"; do
    if [ -d "$dir" ]; then
        echo "❌ ディレクトリが残っています: $dir"
    else
        echo "✅ ディレクトリは削除されています: $dir"
    fi
done

# ユーザーチェック
if id postgres &>/dev/null; then
    echo "❌ postgresユーザーが存在します"
else
    echo "✅ postgresユーザーは削除されています"
fi

echo "=== チェック完了 ==="

再インストール前のシステムクリーンアップ

# パッケージデータベースの更新
sudo apt-get update      # Ubuntu/Debian
sudo yum clean all        # CentOS/RHEL
sudo dnf clean all        # Fedora

# キャッシュクリア
sudo apt-get clean
sudo apt-get autoclean

# システムの再起動(推奨)
sudo reboot

まとめ – PostgreSQLを完全削除してクリーンな環境を!

Linux環境でのPostgreSQL完全アンインストールについて、詳しく解説してきました。

重要ポイント:

  • 必ずデータのバックアップを取る
  • パッケージ削除だけでなくデータと設定も削除
  • ユーザーとグループも忘れずに削除
  • ディストリビューションごとに手順が異なる
  • 完全削除の確認を必ず実施

削除の順序:

  1. サービスの停止
  2. パッケージのアンインストール
  3. データディレクトリの削除
  4. 設定ファイルの削除
  5. ユーザー・グループの削除
  6. 残存ファイルのクリーンアップ

完全にアンインストールすることで、新しいバージョンのクリーンインストールや、他のデータベースへの移行がスムーズに行えます。

削除作業は慎重に、そして必要なデータは必ずバックアップを取ってから実施してください!

コメント

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