centos9 PostgreSQL15をインストールする

centos9 PostgreSQL15をインストールする

centos9に、PostgreSQL15をインストールするまでの手順です。「リポジトリ」を追加してから「dnf」でインストールします。外部から接続できるようにするまでの手順を記述してます。

環境

  • OS CentOS Stream release 9
  • PostgreSQL 15.1

PostgreSQL15インストール

まずは、以下のリポジトリを追加します。

$ sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

既存のモジュールの方は、無効にしておきます。

$ sudo dnf -qy module disable postgresql

アップデートを行います。

$ sudo dnf update -y

用意ができたので、インストールを実行します。

$ sudo dnf install -y postgresql15-server

PostgreSQL15初期化

「initdb」で先に初期化を行っておきます。

$ sudo /usr/pgsql-15/bin/postgresql-15-setup initdb
Initializing database ... OK

自動起動設定と開始を行います。

$ sudo systemctl enable --now postgresql-15

↓ 開始のみ場合は以下を実行します。

$ sudo systemctl start postgresql-15

ステータスを確認してみます。

$ systemctl status postgresql-15

● postgresql-15.service - PostgreSQL 15 database server
     Loaded: loaded (/usr/lib/systemd/system/postgresql-15.service; enabled; vendor preset: disabled)
     Active: active (running) since Tue 2022-11-22 17:41:58 JST; 14min ago
       Docs: https://www.postgresql.org/docs/15/static/
    Process: 2750260 ExecStartPre=/usr/pgsql-15/bin/postgresql-15-check-db-dir ${PGDATA} (code=exited, status>   Main PID: 2750266 (postmaster)
      Tasks: 9 (limit: 46459)
     Memory: 32.4M
        CPU: 3.130s
     CGroup: /system.slice/postgresql-15.service
             ├─2750266 /usr/pgsql-15/bin/postmaster -D /var/lib/pgsql/15/data/
             ├─2750267 "postgres: logger "
             ├─2750268 "postgres: checkpointer "
             ├─2750269 "postgres: background writer "
             ├─2750271 "postgres: walwriter "
             ├─2750272 "postgres: autovacuum launcher "
             ├─2750273 "postgres: logical replication launcher "
             ├─2750286 "postgres: pgadmin postgres 192.168.101.147(62117) idle"
             └─2750318 "postgres: pgadmin postgres 192.168.101.147(62422) idle"

11月 22 17:41:57 localhost.localdomain systemd[1]: Starting PostgreSQL 15 database server...
11月 22 17:41:58 localhost.localdomain postmaster[2750266]: 2022-11-22 17:41:58.006 JST [2750266] LOG:  ログ >11月 22 17:41:58 localhost.localdomain postmaster[2750266]: 2022-11-22 17:41:58.006 JST [2750266] ヒント:  こ>11月 22 17:41:58 localhost.localdomain systemd[1]: Started PostgreSQL 15 database server.

設定ファイル等は、下記の場所に存在します。

$ sudo ls /var/lib/pgsql/15/data

PG_VERSION        pg_commit_ts   pg_multixact  pg_stat      pg_wal                postmaster.pid
base              pg_dynshmem    pg_notify     pg_stat_tmp  pg_xact
current_logfiles  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  postmaster.opts

PostgreSQL15 管理ユーザーのパスワード設定

管理者ユーザーのパスワードを更新しておきます。「postgres」ユーザーに変更してからパスワードを更新します。

$ sudo su - postgres

$ psql -c "alter user postgres with password 'passwordを入力'"

ALTER ROLE

作業が終われば、「exit」で抜けておきます。

[postgres@localhost ~]$ exit

外部接続許可

外部から接続できるようにするには「/var/lib/pgsql/15/data」にある
「postgresql.conf」を以下のように編集します。

$ sudo nano /var/lib/pgsql/15/data/postgresql.conf

listen_addresses = '*'
port = 5432

画像

logファイルの形式も必要であれば変更しておきます。

#log_filename = 'postgresql-%a.log'	# log file name pattern,
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'

画像

次に「pg_hba.conf」を編集します。
※「0.0.0.0/0」は全て許可になるので「192.168.1.0/24」など環境に合わせて設定して下さい。

$ sudo nano /var/lib/pgsql/15/data/pg_hba.conf

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
host    all             all             192.168.0.0/16            scram-sha-256
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256

画像

最後に、「ユーザー」も作成しておきます。

$ sudo su - postgres

$ createuser --pwprompt --interactive pgadmin

新しいロールのためのパスワード: 
もう一度入力してください:
新しいロールをスーパユーザにしますか? (y/n)y

「exit」で抜けて、PostgreSQLを再起動します。

$ exit

$ sudo systemctl restart postgresql-15

あとは「firewall」が設定されていれば「5432」ポートを許可しておきます。

$ sudo firewall-cmd --add-port=5432/tcp --zone=public --permanent
$ sudo firewall-cmd --reload

これで「pgadmin」などから、接続することが可能になります。

「15」がインストールされていることが確認できます。