RHEL 9(Red Hat Enterprise Linux 9)に PostgreSQL 14 をインストールする手順をまとめます。
OSデフォルトを使えばいいですが、特定のバージョンを使いたいシチュエーションは様々です。今回、私は勉強用に14をインストールしたいと思います。
インストール手順
開発元リポジトリ(PGDG)の追加
まずは、PostgreSQL 公式が提供する RHEL 9 用のリポジトリパッケージをインストールします。
dnf -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
標準の PostgreSQL モジュールを無効化
RHEL 9 標準のリポジトリに含まれる PostgreSQL が優先されないよう、組み込みのモジュールストリームを明示的に無効化します。
dnf -qy module disable postgresql
PostgreSQL 14 のインストール
PostgreSQL 14 のサーバーおよびクライアントパッケージをインストールします。
dnf -y install postgresql14-server postgresql14
データベースの初期化
インストールが完了したら、データを格納するデータベースクラスタ(環境)を初期化します。
/usr/pgsql-14/bin/postgresql-14-setup initdb
サービスの起動と自動起動設定
PostgreSQL 14 のサービスを起動し、OS の起動時に自動で立ち上がるように設定します。
systemctl enable --now postgresql-14
初期設定(必要に応じて実施)
接続確認(postgres ユーザー)
デフォルトで作成される管理ユーザー postgres に切り替えて、SQL ツール psql に接続できるか確認します。
PostgreSQLをインストールするとデフォルトで作成される管理ユーザー postgres が作成されます。postgresユーザに切り替えて、SQL ツール psql に接続できるか確認します。
# postgres ユーザーに切り替え
sudo -i -u postgres
# psql 起動
psql
外部からの接続許可(リモート接続する場合)
外部のサーバーからこの PostgreSQL に接続させたい場合は、以下のファイルを編集してください。
- アクセス制限の変更 (/var/lib/pgsql/14/data/pg_hba.conf)
ファイルの末尾などに、接続を許可したいネットワークを追記します(例: パスワード認証を有効にする場合)。
host all all 192.168.0.0/24 scram-sha-256
- リッスンアドレスの変更(/var/lib/pgsql/14/data/postgresql.conf)
すべてのネットワークからの接続を受け付けるよう、以下のように変更します。
listen_addresses = '*'
設定の反映
systemctl restart postgresql-14
ファイアウォール
ファイアウォール(firewalld)が有効な場合、PostgreSQL のデフォルトポートである 5432 を許可しておきます。
firewall-cmd --list-all
firewall-cmd --add-service=postgresql --permanent
firewall-cmd --reload
テスト用ロールを作成する
PostgreSQL にログイン
まず、管理権限を持つ postgres ユーザーとして、データベース管理コンソール psql に接続します。
sudo -i -u postgres
psql
ロール を作成する
ユーザって言ってしまいますが、「ロール」です。聞き手は私より知ってる人がたいていなので許容してくれています。直していこう。
psql 上で以下のコマンドを実行します。ここでは例として、ユーザー名 myuser、パスワード mypassword を作成します。
-- ユーザー作成とパスワード設定
CREATE USER myuser WITH PASSWORD 'mypassword';
PostgreSQLクライアントがある適当なリモートホストからmyuserでログインできるか確認して終わり。
次回は、具体的なロール設計を行いって作成までしようと思います。