1.1 PostgreSQLのインストールと初期設定

PostgreSQLは、クライアント・サーバ構成のデータベースシステムです。従って、PostgreSQLを初めて使用する際には、以下の手順でインストールと初期設定を行います。なお、この手順はOS管理者(rootユーザ)、またはOS管理者権限(sudoコマンド)を行使できるユーザで行う必要があります。

(1) postgresユーザの作成
(2) PostgreSQLパッケージのインストール
(3) データベースクラスタの初期化
(4) データベースサーバの起動

(1) postgresユーザの作成

PostgreSQLを動作させる場合、通常はOS管理者とは別でPostgreSQL専用のDB管理者を作成します。DB管理者のユーザ名は、慣例的に 'postgres' を使用します。postgresユーザは、PostgreSQLのインストール時に自動的に作成することができますが、一時的なファイルの保存場所としてユーザのホームディレクトリがあった方が便利なので、手動で作成しておきます。

AlmaLinuxの場合、useraddコマンドでpostgresユーザとホームディレクトリ '/home/postgres' を同時に作成します。

sudo useradd postgres

この後、postgresユーザでログインできるようにするために、passwdコマンドでパスワードを設定します。

sudo passwd postgres

なお、OSの管理者権限があれば以下の例のようにsudoコマンドでpostgresユーザにログインできるので、パスワードの設定は省略しても構いません。

[admin@host1 ~]$ sudo -iu postgres
[postgres@host1 ~]$ pwd
/home/postgres
[postgres@host1 ~]$ exit
ログアウト
[admin@host1 ~]$

(2) PostgreSQLパッケージのインストール

PostgreSQLは毎年1回のペースでバージョンアップのメジャーリリースが行われ、その後5年間メンテナンスのマイナーリリースが行われます。OSのディストリビューションに標準で含まれるバージョンは最新ではない可能性がありますが、この資料の実習環境としては全く問題ないため、標準のバージョンをインストールします。AlamLinux の場合、dnfコマンドで 'postgresql-server' をインストールすると、PostgreSQL 13のサーバとクライアントプログラム、および依存関係のあるライブラリがインストールされます。

sudo dnf install postgresql-server

以下の例は、AlmaLinux9.3で実際にインストールされるパッケージを示しています。

[admin@host1 ~]$ [admin@host1 ~]$ sudo dnf install postgresql-server
AlmaLinux 9 - AppStream                         452 kB/s | 8.3 MB     00:18
AlmaLinux 9 - BaseOS                            497 kB/s | 3.5 MB     00:07
AlmaLinux 9 - Extras                             21 kB/s |  17 kB     00:00
依存関係が解決しました。
================================================================================
 パッケージ                  Arch       バージョン          リポジトリー  サイズ
================================================================================
インストール:
 postgresql-server           x86_64     13.14-1.el9_3       appstream     5.7 M
依存関係のインストール:
 postgresql                  x86_64     13.14-1.el9_3       appstream     1.5 M
 postgresql-private-libs     x86_64     13.14-1.el9_3       appstream     132 k

トランザクションの概要
================================================================================
インストール  3 パッケージ

なお、PostgreSQLの別のバージョンをインストールする方法については、以下の公式サイトを参照してください。

Linux downloads (Red Hat family)

(3) データベースクラスタの初期化

インストールが完了したらデータベースクラスタを初期化します。データベースクラスタとはPostgreSQLサーバが管理するデータベースの格納エリアで、サーバの起動前に初期化しておく必要があります。以下のコマンドを実行することにより、postgresユーザの権限でデータベースクラスタを初期化します。

sudo -u postgres postgresql-setup --initdb

以下の例のように、データベースクラスタは '/var/lib/pgsql/data' ディレクトリにpostgresqlユーザ所有のファイルとして作成されます。

[admin@host1 ~]$ sudo -u postgres postgresql-setup --initdb
 * Initializing database in '/var/lib/pgsql/data'
 * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log
[admin@host1 ~]$

(4) データベースサーバの起動

PostgreSQLインストール後の初期設定ができたので、systemctlコマンドでデータベースサーバを起動します。

sudo systemctl start postgresql

サーバの起動状態は、以下のコマンドで確認できます。

sudo systemctl status postgresql

以下の例のように、サーバの状態が Active: active (running) になっていればサーバの起動は成功です。

[admin@host1 ~]$ sudo systemctl status postgresql
● postgresql.service - PostgreSQL database server
     Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled; pres>
     Active: active (running) since Tue 2024-05-14 14:37:02 JST; 10s ago
    Process: 33963 ExecStartPre=/usr/libexec/postgresql-check-db-dir postgresql>
   Main PID: 33965 (postmaster)
以下省略

なお、以下のコマンドを実行しておくと、OSを再起動したときにデータベースサーバを自動的に再起動できます。

sudo systemctl enable postgresql