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
リモート アクセス ルールの構成
特定のユーザーとデータベースの許可
特定の 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の使用に関する詳細については、公式の ドキュメンテーション.