centos9 PostgreSQL16をインストールする
- 作成日 2023.11.08
- PostgreSQL
- PostgreSQL

centos9に、PostgreSQL16をインストールするまでの手順です。インストールは簡単で「リポジトリ」を追加してから「dnf」でインストールすることができます。外部から接続できるようにするまでの手順を記述してます。
環境
- OS CentOS Stream release 9
- PostgreSQL 16.0
PostgreSQL16インストール
まずは、以下のリポジトリを追加します。
$ sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
実行結果

アップデートを行います。
$ sudo dnf update -y
用意ができたので、インストールを実行します。
$ sudo dnf install -y postgresql16-server postgresql16-contrib
実行結果

バージョンを確認してみます。
$ psql -V
psql (PostgreSQL) 16.0
PostgreSQL16初期化
「initdb」で先に初期化を行っておきます。
$ sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
Initializing database ... OK
自動起動設定と開始を行います。
$ sudo systemctl enable --now postgresql-16
↓ 開始のみ場合は以下で可能です。
$ sudo systemctl start postgresql-16
ステータスを確認してみます。
$ systemctl status postgresql-16
● postgresql-16.service - PostgreSQL 16 database server
Loaded: loaded (/usr/lib/systemd/system/postgresql-16.service; enabled; preset: disabled)
Active: active (running) since Wed 2023-11-08 16:09:50 JST; 7s ago
Docs: https://www.postgresql.org/docs/16/static/
Main PID: 109591 (postgres)
Tasks: 7 (limit: 22410)
Memory: 17.4M
CPU: 59ms
CGroup: /system.slice/postgresql-16.service
├─109591 /usr/pgsql-16/bin/postgres -D /var/lib/pgsql/16/data/
├─109592 "postgres: logger "
├─109593 "postgres: checkpointer "
├─109594 "postgres: background writer "
├─109596 "postgres: walwriter "
├─109597 "postgres: autovacuum launcher "
└─109598 "postgres: logical replication launcher "
11月 08 16:09:50 localhost.localdomain systemd[1]: Starting PostgreSQL 16 database server...
11月 08 16:09:50 localhost.localdomain postgres[109591]: 2023-11-08 16:09:50.702 JST [109591] LOG: ログ出力をログ収集プロセスにリダイレクトしています
11月 08 16:09:50 localhost.localdomain postgres[109591]: 2023-11-08 16:09:50.702 JST [109591] ヒント: ここからのログ出力はディレクトリ"log"に現れます。
11月 08 16:09:50 localhost.localdomain systemd[1]: Started PostgreSQL 16 database server.
設定ファイル等は、下記の場所にあります。
$ sudo ls /var/lib/pgsql/16/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
PostgreSQL16 管理ユーザーのパスワード設定
管理者ユーザーのパスワードを更新しておきます。「postgres」ユーザーに変更してからパスワードを更新します。
$ sudo su - postgres
$ psql -c "alter user postgres with password 'passwordを入力'"
ALTER ROLE
作業が終われば、「exit」で抜けておきます。
[postgres@localhost ~]$ exit
外部接続許可
外部から接続できるようにするには「/var/lib/pgsql/16/data」にある
「postgresql.conf」を以下のように編集します。
$ sudo nano /var/lib/pgsql/16/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/16/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-16
あとは「firewall」が設定されていれば「5432」ポートを許可しておきます。
$ sudo firewall-cmd --add-port=5432/tcp --zone=public --permanent
$ sudo firewall-cmd --reload
これで「pgadmin」などから、接続することが可能になります。
「16」がインストールされていることが確認できます。

-
前の記事
mac 一定のタイミングでコマンドを実行する 2023.11.08
-
次の記事
Google スライド 辞書を開くショートカットキー 2023.11.08
コメントを書く