1.1 PostgreSQLのインストールと初期設定(AlmaLinuxの場合)

以下を確認します。なお、OS管理者権限(sudoコマンド)を行使できるadminユーザでログインして実行します。

  • postgresユーザを作成する
  • postgresqlをインストールし、サーバを起動する

postgresユーザの作成

login as: admin
admin@localhost's password: ※adminユーザのパスワードを入力
Last login: Tue May 14 14:23:59 2024 from 10.0.2.2
[admin@host1 ~]$ sudo useradd postgres
[sudo] admin のパスワード: ※adminユーザのパスワードを入力
[admin@host1 ~]$ sudo passwd postgres
ユーザー postgres のパスワードを変更。
新しい パスワード: ※postgresユーザに設定するパスワードを入力
正しくないパスワード: このパスワードは 8 文字未満の文字列です
新しい パスワードを再入力してください: ※postgresユーザのパスワードを再入力
passwd: すべての認証トークンが正しく更新できました。
[admin@host1 ~]$ sudo -iu postgres ※次に表示されるプロンプトがpostgres@に変わることを確認
[postgres@host1 ~]$ pwd ※カレントディレクトリが/home/postgresであることを確認
/home/postgres
[postgres@host1 ~]$ exit ※postgresユーザからログアウトすることを確認
ログアウト
[admin@host1 ~]$

postgresユーザに設定するパスワードの強度が弱い場合に「正しくないパスワード」と表示されることがありますが、それに構わず同じパスワードを再入力すればパスワードの設定が成功します。なお、postgresユーザのパスワードを設定しなくても、sudo -iu postgres コマンドでpostgresユーザにログインできれば問題ありません。

postgresqlのインストールとサーバの起動

[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 パッケージ

ダウンロードサイズの合計: 7.4 M
インストール後のサイズ: 29 M
これでよろしいですか? [y/N]: y ※インストールされるパッケージを確認して y を入力
パッケージのダウンロード:
(1/3): postgresql-private-libs-13.14-1.el9_3.x8 999 kB/s | 132 kB     00:00
(2/3): postgresql-13.14-1.el9_3.x86_64.rpm      948 kB/s | 1.5 MB     00:01
(3/3): postgresql-server-13.14-1.el9_3.x86_64.r 1.2 MB/s | 5.7 MB     00:04
--------------------------------------------------------------------------------
合計                                            1.3 MB/s | 7.4 MB     00:05
AlmaLinux 9 - AppStream                         3.0 MB/s | 3.1 kB     00:00
GPG 鍵 0xB86B3716 をインポート中:
 Userid     : "AlmaLinux OS 9 "
 Fingerprint: BF18 AC28 7617 8908 D6E7 1267 D36C B86C B86B 3716
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux-9
これでよろしいですか? [y/N]: y ※GPG鍵のインポートを確認して y を入力
鍵のインポートに成功しました
トランザクションを確認しています
トランザクションの確認に成功しました。
トランザクションをテストしています
トランザクションのテストに成功しました。
トランザクションを実行しています
  準備中           :                                                        1/1
  インストール中   : postgresql-private-libs-13.14-1.el9_3.x86_64           1/3
  インストール中   : postgresql-13.14-1.el9_3.x86_64                        2/3
  scriptletの実行中: postgresql-server-13.14-1.el9_3.x86_64                 3/3
  インストール中   : postgresql-server-13.14-1.el9_3.x86_64                 3/3
  scriptletの実行中: postgresql-server-13.14-1.el9_3.x86_64                 3/3
  検証中           : postgresql-13.14-1.el9_3.x86_64                        1/3
  検証中           : postgresql-private-libs-13.14-1.el9_3.x86_64           2/3
  検証中           : postgresql-server-13.14-1.el9_3.x86_64                 3/3

インストール済み:
  postgresql-13.14-1.el9_3.x86_64
  postgresql-private-libs-13.14-1.el9_3.x86_64
  postgresql-server-13.14-1.el9_3.x86_64

完了しました!
[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 ~]$ sudo ls /var/lib/pgsql/data ※データベースクラスタの内容を確認
PG_VERSION    pg_dynshmem    pg_notify     pg_stat_tmp  pg_xact
base          pg_hba.conf    pg_replslot   pg_subtrans  postgresql.auto.conf
global        pg_ident.conf  pg_serial     pg_tblspc    postgresql.conf
log           pg_logical     pg_snapshots  pg_twophase
pg_commit_ts  pg_multixact   pg_stat       pg_wal
[admin@host1 ~]$ sudo systemctl start postgresql ※データベースサーバの起動
[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 ※active (running)を確認
    Process: 33963 ExecStartPre=/usr/libexec/postgresql-check-db-dir postgresql>
   Main PID: 33965 (postmaster)
      Tasks: 8 (limit: 10864)
     Memory: 16.5M
        CPU: 40ms
     CGroup: /system.slice/postgresql.service
             ├─33965 /usr/bin/postmaster -D /var/lib/pgsql/data
             ├─33966 "postgres: logger "
             ├─33968 "postgres: checkpointer "
             ├─33969 "postgres: background writer "
             ├─33970 "postgres: walwriter "
             ├─33971 "postgres: autovacuum launcher "
             ├─33972 "postgres: stats collector "
             └─33973 "postgres: logical replication launcher "

 5月 14 14:37:02 host1.example1 systemd[1]: Starting PostgreSQL database server>
 5月 14 14:37:02 host1.example1 postmaster[33965]: 2024-05-14 14:37:02.470 JST >
 5月 14 14:37:02 host1.example1 postmaster[33965]: 2024-05-14 14:37:02.470 JST >
 5月 14 14:37:02 host1.example1 systemd[1]: Started PostgreSQL database server.
[admin@host1 ~]$ sudo systemctl enable postgresql ※データベースサーバの自動起動の設定
Created symlink /etc/systemd/system/multi-user.target.wants/postgresql.service → /usr/lib/systemd/system/postgresql.service.
[admin@host1 ~]$

これ以降、原則としてpostgresqlサーバは常時起動させておいてください。また、何らかの理由により起動中のpostgresqlサーバを停止させたい場合は、adminユーザで sudo systemctl stop postgresql を入力してください。