Ubuntu+PostgreSQL環境構築メモ

目次

・環境について
・UbuntuにPostgreSQLのインストールする
・PostgreSQLの設定:postgresユーザーのパスワード設定
・PostgreSQLの設定:外部からの接続方法
・PostgreSQLのアンインストール

構築環境について

OS:Ubuntu 24.04.3(VM上にインストール済み)
DB:PostgreSQL 18

UbuntuにPostgreSQLのインストールする

Ubuntu では 2つのインストール方法がある。
まずは簡単な「Ubuntu公式APTリポジトリ」からの方法を紹介。
必要に応じて「PostgreSQL公式リポジトリ」も使える。

方法①:Ubuntu公式APTリポジトリからインストール(最も簡単)

Ubuntu に標準で入っているパッケージを使う方法。
1. パッケージリストを更新
sudo apt update

2. PostgreSQL と便利ツールをインストール
sudo apt install postgresql postgresql-contrib
※基本的にDBの基本機能のみを使用する場合は不要


3. サービスが起動しているか確認
sudo systemctl status postgresql
active (running) ならOK。


4. バージョン確認
psql --version
※2025年12月時点で16.xがインストールされた!!!


 方法②:PostgreSQL公式APTリポジトリからインストール
(バージョン指定したい場合、最新版が欲しい場合)

PostgreSQL の公式リポジトリを追加して、任意のバージョンをインストールする方法。

1. 自動設定(最も簡単)
sudo apt install -y postgresql-common
sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh

2. PostgreSQL をインストール
最新版を入れる場合:
sudo apt install postgresql

バージョン指定する場合(例:18):
sudo apt install postgresql-18

4. バージョン確認
psql --version

どちらの方法を選べばいいのか…

Ubuntu公式APT
 … 安定・簡単・すぐ使える 特定バージョンにこだわらない

PostgreSQL公式APT
 … 最新版・バージョン選択可能 16/17/18 などを明確に使いたい


PostgreSQLの設定:postgresユーザーのパスワード設定

PostgreSQL インストール後に「postgres / postgres」を設定する方法

※前提:PostgreSQLがインストールされていること

① postgres ユーザーで psql に入る
sudo -u postgres psql

②パスワードを設定(※psql の中で以下を実行)
テンプレート:ALTER USER ユーザー名 WITH PASSWORD 'パスワード文字列';

実行コマンド:ALTER USER postgres WITH PASSWORD 'postgres';


④ psql を終了
\q

これで、ユーザー"postgres"、パスワード"postgres"が設定される。

PostgreSQL の認証方式が “パスワード不要のモード(peer / ident / trust)になっている場合があるため、
設定ファイルの確認と修正を行う必要がある。
※PostgreSQL には複数の認証方式があるが、Ubuntuのデフォルトは「peer 認証」

peer 認証
 …OS のユーザー名と PostgreSQL のユーザー名が一致していれば、
  パスワードなしでログインできる

パスワードを必ず要求させたい場合
PostgreSQL の設定ファイル "pg_hba.conf" を修正する必要がある。
場所(Ubuntu):/etc/postgresql/<バージョン>/main/pg_hba.conf
バージョン18をインストールしている場合は、
sudo nano /etc/postgresql/18/main/pg_hba.conf

修正内容
【変更前(デフォルト)】
local   all             postgres                                peer

【変更後(パスワード必須にする)】
local   all             postgres                                md5

PostgreSQL を再起動:
sudo systemctl restart postgresql

これで、`psql` に入るときに必ずパスワードが必要になります。

 動作確認
psql -U postgres -W

→ パスワード入力が求められるようになる。


PostgreSQLの設定:外部からの接続方法

 外部から接続したい場合
Ubuntu の PostgreSQL はデフォルトで「ローカル UNIX ソケット接続のみ許可」なので、
TCP 接続したい場合は以下の設定も必要になる。

1. postgresql.conf を編集
sudo nano /etc/postgresql/*/main/postgresql.conf

以下を有効化:
listen_addresses = '*'

2. pg_hba.conf を編集
sudo nano /etc/postgresql/*/main/pg_hba.conf

以下を追加(ローカルネットワークからの接続を許可する例):
host all all 0.0.0.0/0 md5

3. PostgreSQL を再起動
sudo systemctl restart postgresql


PostgreSQLのアンインストール

アンインストール方法はいくつか段階があります。目的に応じて選べます。

1. サービスを停止する
sudo systemctl stop postgres

2. 単純にアンインストール(設定ファイルは残す)
sudo apt remove postgresql postgresql-contrib
※サービス本体は消えますが、設定ファイルやデータは残ります。

3. 完全削除(設定ファイルも含めて削除)
sudo apt purge postgresql postgresql-contrib
 完全に削除するには、以下の情報も含めて削除する必要があります
 ・プログラム
 ・サービス
 ・設定ファイル
 ・データディレクトリ
 ・ユーザー
 ・グループ

4. 使われなくなった依存パッケージも削除
 ※上記の remove/purge の後に実行する
sudo apt autoremove

5. データベースのデータも完全に削除したい場合
 PostgreSQL のデータディレクトリは通常こにあるはず
 (環境やPostgreSQLのバージョンによって異なる場合あり)
/var/lib/postgresql/
 ①ディレクトリの存在確認を行う
ls -l /var/lib/postgresql/
※なかったら、ディレクトリを探す必要あり

 ②ディレクトリの削除を行う
sudo rm -rf /var/lib/postgresql/
※本当に全データが消えるので注意
(必要に応じて、事前にバックアップを行っておくこと)

 ③設定ファイルが格納されているディレクトリを削除
sudo rm -rf /etc/postgresql/
sudo rm -rf /etc/postgresql-common/
sudo rm -rf /var/log/postgresql/

 ④PostgreSQL のユーザーとグループを削除(必要に応じて)
sudo deluser postgres
sudo delgroup postgres

 ⑤サービスを削除する
  PostgreSQL 本体を削除しても、systemd のサービス定義だけが残っている状態
/usr/lib/systemd/system/postgresql.service
  これを削除し、systemd をリロードすれば完全に消えます。

 ⑥サービスファイルを削除
  ※apt purge" しても、環境によっては、サービスが残ることがあります。
   "/usr/lib/systemd/system/postgresql.service"や、
   "/lib/systemd/system/postgresql.service"

   これは Debian/Ubuntu のパッケージの仕様によるもので、
   まれに purge が取りこぼすことがあるため、サービスを削除する
sudo rm /usr/lib/systemd/system/postgresql.service

 ⑦systemd をリロード
sudo systemctl daemon-reload

 ⑧ ステータス確認
sudo systemctl status postgresql

  これで"Unit postgresql.service could not be found."または、
  "Unit postgresql.service not found."となれば完全削除成功。


6. 残骸チェックを行う
sudo find / -name "*postgresql*" 2>/dev/null

0 件のコメント:

コメントを投稿