Cent os8 PostgreSQL 14をインストールする

Cent os8 PostgreSQL 14をインストールする

Cent os8に、PostgreSQL 14をインストールするまでの手順を記述してます。

環境

  • OS Rocky Linux release 8.4 (Green Obsidian)

PostgreSQL 14インストール

まず最初に、リポジトリを追加します。

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

既存のモジュールを無効にします。

$ sudo dnf -qy module disable postgresql

「dnf」コマンドで、インストールを実行します。

$ sudo dnf install -y postgresql14-server

PostgreSQL 14初期化

初期化を行っておきます。

$ sudo /usr/pgsql-14/bin/postgresql-14-setup initdb

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

$ sudo systemctl enable --now postgresql-14

開始のみ場合は、「start」を使用します。

$ sudo systemctl start postgresql-14

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

$ systemctl status postgresql-14

● postgresql-14.service - PostgreSQL 14 database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql-14.service; enabled; vendor preset: disabled)
   Active: active (running) (thawing) since Thu 2021-10-07 09:47:05 JST; 5min ago
     Docs: https://www.postgresql.org/docs/14/static/
  Process: 1442806 ExecStartPre=/usr/pgsql-14/bin/postgresql-14-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
 Main PID: 1442812 (postmaster)
    Tasks: 9 (limit: 22940)
   Memory: 21.4M
   CGroup: /system.slice/postgresql-14.service
           ├─1442812 /usr/pgsql-14/bin/postmaster -D /var/lib/pgsql/14/data/
           ├─1442814 postgres: logger 
           ├─1442816 postgres: checkpointer 
           ├─1442817 postgres: background writer 
           ├─1442818 postgres: walwriter 
           ├─1442819 postgres: autovacuum launcher 
           ├─1442820 postgres: stats collector 
           ├─1442821 postgres: logical replication launcher 
           └─1444181 postgres: pgadmin postgres 192.168.101.77(59800) idle

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

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

PG_VERSION        global        pg_dynshmem    pg_logical    pg_replslot   pg_stat      pg_tblspc    pg_xact               postmaster.opts
base              log           pg_hba.conf    pg_multixact  pg_serial     pg_stat_tmp  pg_twophase  postgresql.auto.conf  postmaster.pid
current_logfiles  pg_commit_ts  pg_ident.conf  pg_notify     pg_snapshots  pg_subtrans  pg_wal       postgresql.conf

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

管理者ユーザーのパスワードを更新しておきます。

$ sudo su - postgres

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

ALTER ROLE

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

$ exit

外部接続許可

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

$ sudo nano /var/lib/pgsql/14/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/14/data/pg_hba.conf

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-14

あとは、firewallを許可しておきます。

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

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

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