Fedora 40 または 39 Linux に PostgreSQL 14 をインストールする方法

PostgreSQL 14 は、堅牢性、拡張性、豊富な機能セットで知られるオープンソースのリレーショナル データベース管理システムです。PostgreSQL 14 で導入された主要な機能の 1 つは、増分ソートを処理する機能で、特定のワークロードのクエリ パフォーマンスが大幅に向上しました。このリリースでは、並列処理、バキューム、JSON 処理も強化され、エンタープライズ環境や開発環境に最適な選択肢となっています。最新リリースより数バージョン遅れていますが、PostgreSQL 14 は信頼性が高く、幅広くサポートされているオプションです。

コマンドライン ターミナルを使用して Fedora 40 または 39 に PostgreSQL 14 をインストールするには、PostgreSQL RPM ビルドから直接インポートしてインストールできます。この方法により、最新バージョンが確実に入手でき、将来のアップグレードが簡単になります。

PostgreSQL 14 をインストールする前に Fedora を更新する

まず、Fedora システムを更新して、すべてのパッケージが最新であることを確認します。この手順により、PostgreSQL のインストール中に発生する可能性のある競合を防ぐことができます。以下のコマンドを実行します。

sudo dnf update --refresh

PostgreSQL RPM GPG キー リポジトリをインポートする

まず、PostgreSQL リポジトリをインポートします。このアクションにより、最新の PostgreSQL バージョンへのアクセスが保証されます。Fedora Linux のバージョンに対応するリポジトリを選択してインポートします。

PostgreSQL 14 をインポート

注意: Fedora ディストリビューションのバージョンに合った正しいバージョンをインポートすることを忘れないでください。

Fedora 40 の場合は、次のコマンドを使用します。

sudo dnf install http://apt.postgresql.org/pub/repos/yum/reporpms/F-40-x86_64/pgdg-fedora-repo-latest.noarch.rpm

Fedora 39 の場合、コマンドは少し異なります。

sudo dnf install http://apt.postgresql.org/pub/repos/yum/reporpms/F-39-x86_64/pgdg-fedora-repo-latest.noarch.rpm

デフォルトの PostgreSQL モジュールを無効にする (該当する場合)

Fedora のデフォルト リポジトリには、多くの場合、PostgreSQL がモジュールとして含まれています。PostgreSQL リポジトリからのインストールを優先するには、このデフォルト モジュールを無効にすることをお勧めします。これを行うには、次のコマンドを使用します。

sudo dnf -qy module disable postgresql

PostgreSQL 14のインストールを完了する

PostgreSQL 14のインストールを続行します

PostgreSQL 14 サーバーとそのドキュメントをインストールするには、次のコマンドを使用します。

sudo dnf install postgresql14-server postgresql14-docs -y

さらに、開発パッケージは次のようにインストールできます。

sudo dnf install postgresql14-devel

最後に、よく使用される追加のモジュール、バイナリ、ライブラリをインストールできます。

sudo dnf install postgresql14-libs postgresql14-odbc postgresql14-plperl postgresql14-plpython3 postgresql14-pltcl postgresql14-tcl postgresql14-contrib postgresql14-llvmjit

PostgreSQL 14 データベースを初期化する

インストールが完了したら、次のコマンドを実行してデータベースを初期化する必要があります。これを行わないと、PostgreSQL は機能しなくなります。

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

PostgreSQL 14 Systemd サービスを有効にする

デフォルトでは、PostgreSQL はアクティブ化されていません。システムの起動時にサービスをすぐに開始するには、次のコマンドを使用します。

sudo systemctl enable postgresql-14 --now

PostgreSQL 14のインストールを確認する

次に、次のコマンドを使用してステータスを確認し、ソフトウェアがエラーなくインストールされ、アクティブ化されていることを確認します。

systemctl status postgresql-14

PostgreSQL 14 の Systemd サービス コマンド

PostgreSQL 14 サービスの管理

PostgreSQL データベース サーバーは、Fedora 上で「postgresql-14」という systemd サービスとして動作します。システム管理者は、日常的なメンテナンスとトラブルシューティングに不可欠な一連の systemd コマンドを使用して、このサービスを管理できます。

PostgreSQL 14 サーバーの停止

メンテナンスや構成の変更などの理由で PostgreSQL サービスを停止するには、次のコマンドを使用します。

sudo systemctl stop postgresql-14

PostgreSQL 14 サーバーの起動

特に停止後または初期インストール後に PostgreSQL サービスを開始するには、次のコマンドを使用します。

sudo systemctl start postgresql-14

PostgreSQL 14 サーバーの再起動

再起動コマンドは、新しい設定を適用したり、PostgreSQL サービスをリセットしたりする必要がある場合に便利です。このコマンドは、1 つのアクションでサービスを停止してから起動します。

sudo systemctl restart postgresql-14

PostgreSQL 14 サーバーの再ロード

reload コマンドは、データベースを停止せずに構成の変更を適用するのに最適です。このコマンドは、データベース操作を中断せずにサービスを更新します。

sudo systemctl reload postgresql-14

PostgreSQL 14 のサービスステータスの確認

PostgreSQL サービスの動作ステータスを確認するには、次のコマンドを使用します。このコマンドは、アクティブ、アイドル、問題が発生しているかどうかなど、サービスの状態に関する情報を提供します。

systemctl status postgresql-14

PostgreSQL 14 の設定

Postgres 14 アカウントへの切り替え

Postgres 14 アカウントへのアクセス

PostgreSQL のインストール中に、「postgres」という名前のユーザー アカウントが自動的に作成されます。このアカウントは、スーパーユーザー権限を持つデフォルトの Postgres ロールに関連付けられています。PostgreSQL データベースにアクセスするには、次のコマンドを使用して「postgres」アカウントに切り替えます。

sudo -i -u postgres

PostgreSQL 14 プロンプトの入力

「postgres」ユーザーに切り替えたら、「psql」と入力して PostgreSQL プロンプトに直接アクセスします。接続が成功すると、ターミナル プロンプトが postgres=# に変わり、データベースへの接続がアクティブであることを示します。

PostgreSQL データベースを終了するには、次のように入力します。

psql

PostgreSQL 14 にアクセスするための代替方法

直接アクセスにSudoを使用する

または、次のコマンドを使用して、アカウントを切り替えずに PostgreSQL データベースと対話します。

exit

Postgresアカウントを切り替える代わりに

ユーザー アカウントを変更せずに Postgres データベースとやり取りする別の方法は、sudo コマンドを使用して直接接続することです。これを行うには、次のように入力します。

sudo -u postgres psql

このコマンドは追加のターミナル コマンドをバイパスするため、データベースとの迅速なやり取りに効率的です。

終了するには、最初の方法と同様に、exit と入力します。

exit

PostgreSQL 14でユーザーとデータベースを作成する

新しいユーザーロールの作成

新しいロールを作成できるのは、スーパーユーザーと createrole 権限を持つロールのみです。ユーザーを作成するには、次のコマンドを使用します。

sudo su - postgres -c "createuser <name>"

交換する希望するユーザー名を入力します。

新しいデータベースの作成

次に、新しく作成したユーザー用の PostgreSQL データベースを作成します。

sudo su - postgres -c "createdb <namedb>"

交換する希望するデータベース名を入力します。

権限の付与

新しいデータベースの新しいユーザーに権限を付与するには、まずスーパーユーザーとして PostgreSQL データベースに接続します。

sudo -u postgres psql

次に、新しいユーザーにすべての権限を付与します。

GRANT ALL PRIVILEGES ON DATABASE <usernamedb> TO <name>;

交換するデータベース名とユーザー名を入力します。終了するには、exit と入力します。

exit

PostgreSQL 14 の Firewalld を設定する

PostgreSQL 14 のファイアウォールルールの設定

PostgreSQL のセキュリティ保護には、サービスのインストールと実行以上のことが必要です。ネットワーク アクセス制御を効果的に構成することが重要です。これにより、データベースが保護され、正当なトラフィックのみがデータベースに到達するようになります。ここでは、PostgreSQL を保護するために、Fedora の動的ファイアウォール マネージャーである、firewalld の設定について説明します。

PostgreSQL のファイアウォールゾーンの作成

まず、firewalld に PostgreSQL 専用のゾーンを作成します。このアプローチにより、PostgreSQL 固有のルールをより細かく制御し、明確に管理できるようになります。

sudo firewall-cmd --permanent --new-zone=postgres

このコマンドは、「postgres」ゾーンを確立し、PostgreSQL 関連のファイアウォール ルールを分離して管理を容易にします。

既知の IP アドレスへのアクセスを制限する

単一の IP アドレスからのアクセスを許可する

1 つのクライアントまたはサーバーのみが PostgreSQL にアクセスするシナリオの場合:

sudo firewall-cmd --permanent --zone=postgres --add-source=1.2.3.4

1.2.3.4 を、データベースへのアクセスを必要とする特定の IP アドレスに置き換えます。

サブネットの許可

企業ネットワークのような環境では、サブネット全体を許可する必要がある場合があります。

sudo firewall-cmd --permanent --zone=postgres --add-source=192.168.1.0/24

ここで、192.168.1.0/24 はサブネットを表します。この値を、目的のネットワーク範囲に合わせて調整します。

複数の特定の IP へのアクセスを許可する

アクセスを必要とする既知の IP が複数あるシナリオの場合:

sudo firewall-cmd --permanent --zone=postgres --add-source=1.2.3.4
sudo firewall-cmd --permanent --zone=postgres --add-source=1.2.3.5

各 IP アドレスに対してこのコマンドを繰り返します。

PostgreSQL 14 のポート アクセスの管理

デフォルトの PostgreSQL ポートの設定

デフォルト ポートを使用する標準インストールの場合:

sudo firewall-cmd --permanent --zone=postgres --add-port=5432/tcp
ポート構成のカスタマイズ

PostgreSQL が非標準ポート (たとえば、5433) で動作する場合:

sudo firewall-cmd --permanent --zone=postgres --add-port=5433/tcp

特定の PostgreSQL 構成に応じてポート番号を変更します。

新しいファイアウォールルールの実装と検証

変更を適用する

新しいルールを有効にするには、firewalld をリロードします。

sudo firewall-cmd --reload

この手順により、新しい構成がすぐに有効になります。

構成の確認

設定後は、「postgres」ゾーンに設定されているルールを確認することをお勧めします。

sudo firewall-cmd --list-all --zone=postgres

このコマンドは、「postgres」ゾーン内のすべてのアクティブなルールを表示し、setup.expの検証を可能にします。

PostgreSQL 14 のリモート アクセス構成

リモート アクセス用のリスニング インターフェイスの設定

PostgreSQL 設定の変更

PostgreSQL へのリモート アクセスを有効にするには、postgresql is necessary.conf ファイル内のインターフェイス設定を調整する必要があります。このプロセスにより、PostgreSQL はさまざまなソースからの接続を受け入れることができるようになります。

前のセクションで説明したように、リモート アクセスを許可するように FirewallD 設定が行われていることを確認します。

設定ファイルへのアクセス

PostgreSQL 14 の設定を変更するには、nano テキスト エディタを使用します。

sudo nano /var/lib/pgsql/14/data/postgresql.conf
リスニングアドレスの編集

「接続設定」セクションで、listen_addresses を 'localhost' から要件に合わせて変更します。

  • すべてのインターフェースでリッスン: 任意のソースからの接続を受け入れるには、listen_addresses を '*' に設定します。
listen_addresses = '*'
  • 特定のインターフェースでリッスン: 特定のインターフェースへの接続を制限するには、IP アドレスを指定します。
listen_addresses = '192.168.1.100'

編集後、ファイルを保存し (Ctrl + O、次に Enter)、終了します (Ctrl + X)。

PostgreSQL 14 サービスの再起動

PostgreSQL サービスを再起動して変更を適用します。

sudo systemctl restart postgresql-14

リスニングポートの確認

ss ユーティリティを使用して、PostgreSQL が指定されたポートでリッスンしていることを確認します。

ss -nlt | grep 5432

成功した場合、ターミナル ポートにポートが表示されます。

pg_hba.conf の高度なリモート接続設定

pg_hba.conf ファイルでのアクセスのカスタマイズ

リモート接続をきめ細かく制御するために、pg_hba.conf ファイルにはさまざまなカスタマイズ オプションが用意されています。

pg_hba.conf の編集

pg_hba.conf ファイルを開きます。

sudo nano /var/lib/pgsql/14/data/pg_hba.conf
Fedora Linux 上の PostgreSQL 14 用の pg_hba 設定ファイル
Fedora Linux 上の PostgreSQL 14 の pg_hba 設定ファイルのスクリーンショット例
リモート アクセス ルールの構成
特定のユーザーとデータベースの許可

特定の IP アドレスからの特定のユーザーおよびデータベースへのアクセスを制限するには:

ホスト mydatabase myuser 192.168.1.100/32 md5
サブネットの許可

サブネット全体など、より広範囲のアクセスの場合:

ホストすべて 192.168.1.0/24 md5
さまざまな認証方法の使用

環境に適した認証方法を選択してください。パスワードベースの認証の場合:

ホスト すべて すべて 0.0.0.0/0 md5

信頼認証の場合(セキュリティリスクに注意してください):

ホスト すべて すべて 0.0.0.0/0 信頼

必要なルールを設定したら、保存してエディターを終了します。

変更の適用と検証

新しい設定を実装するには、PostgreSQL を再起動します。

sudo systemctl restart postgresql-14

次のコマンドを使用して、pg_hba.conf の有効な設定を確認します。

cat /var/lib/pgsql/14/data/pg_hba.conf

PostgreSQL 14 の SELinux を設定する

Fedora で PostgreSQL 14 を構成する場合、SELinux (Security-Enhanced Linux) を適切に設定することが重要です。SELinux は、アクセス制御ポリシーを適用することでセキュリティの層を追加します。構成を誤ると、アクセス拒否やサービスの中断などの一般的な問題が発生する可能性があります。

トラブルシューティングのために SELinux を Permissive モードに設定する

SELinux モードを一時的に調整する

PostgreSQL の起動や機能に問題がある場合は、一時的に SELinux を「Permissive」モードに設定することを検討してください。このモードでは、「Enforcing」モードではブロックされる操作が許可されますが、確認のためにログに記録されます。

sudo setenforce 0

AVC 拒否のログの監視

SELinux ログで AVC (Access Vector Cache) 拒否を確認します。

sudo restorecon -Rv /var/lib/pgsql/14/data/

このコマンドは、PostgreSQL が正しく機能するのを妨げる SELinux ポリシーを識別するのに役立ちます。

PostgreSQL 14 の SELinux ポリシーの設定

デフォルトの SELinux コンテキストの復元

ファイルに正しい SELinux コンテキストがあることを確認するには、restorecon コマンドを使用します。PostgreSQL ディレクトリまたはファイルのコンテキストが正しくないと、アクセスの問題が発生する可能性があります。

sudo setsebool -P postgresql_can_rnetwork 1

このコマンドは、postgresql_can_rnetwork ブール値を有効にし、ネットワーク接続を許可します。

高度な SELinux 構成

SELinux ポリシーのカスタマイズ

PostgreSQL が他のサービスやカスタム ポートとやり取りする場合など、より複雑な設定では、カスタム SELinux ポリシーの作成が必要になる場合があります。audit2allow ツールを使用して、特定のニーズに基づいてカスタム ポリシー モジュールを生成します。

カスタムポリシーの適用

カスタム ポリシーを作成したら、以下を使用して適用します。

sudo semodule -i my_postgresql.pp

my_postgresql.pp をポリシー ファイルの名前に置き換えます。

SELinux設定の確認

SELinux ステータスの確認

SELinux ステータスを確認して、PostgreSQL インストールに対して正しく設定されていることを確認します。

sestatus

ファイルコンテキストの検証

PostgreSQL に関連するファイルとディレクトリに適切な SELinux コンテキストがあることを確認します。

ls -Z /var/lib/pgsql/14/data/

結論

PostgreSQL 14 が Fedora システムに正常にインストールされると、データベースのニーズに合わせてその高度な機能と堅牢なパフォーマンスを活用できます。システムを最新の状態に保つために、PostgreSQL RPM ビルドの更新と将来のアップグレードを定期的に確認してください。

PostgreSQLの使用に関する詳細については、公式の ドキュメンテーション.

Joshua James

コメントを残す