ウェブサイト検索

Debian 10 に PostgreSQL データベースをインストールする方法


PostgreSQL (Postgres とも呼ばれます) は、すべての主要なオペレーティング システムで動作する実証済みのアーキテクチャを備えた、最も先進的なオープンソースの汎用オブジェクト リレーショナル データベース システムです。これは、優れたデータ整合性を提供し、強力なアドオンをサポートする、高性能、安定性、スケーラブルで拡張可能なデータベース システムです。

重要なのは、PostgreSQL を使用すると、データベースを再コンパイルすることなく、独自のデータ型を定義したり、カスタム関数を追加したり、C/C++、Java などのさまざまなプログラミング言語からコードを記述したりすることもできます。

PostgreSQL は、Apple、富士通、Red Hat、Cisco、Juniper Network などの有名なテクノロジー企業で使用されています。

この記事では、Debian 10PostgreSQL データベース サーバーをインストール、保護、構成する方法を説明します。

要件:

  1. Debian 10 (Buster) 最小サーバーのインストール

Debian 10 への PostgreSQL サーバーのインストール

PostgreSQL データベース サーバーをインストールするには、PostgreSQL 11 サーバーとクライアントをインストールするデフォルトの APT パッケージ マネージャーを使用します。

apt install postgresql-11 postgresql-client-11

Debian では、他のデーモンと同様に、次のスクリーンショットに示すように、パッケージのインストールが完了した直後に Postgres データベースが初期化されます。

Postgres データベースが本当に初期化されているかどうかを確認するには、次のように PostgreSQL サーバーの接続ステータスを確認する pg_isready ユーティリティを使用できます。

pg_isready 

さらに、systemd では、Postgres サービスも自動的に開始され、システム起動時に開始できるようになります。サービスが正常に稼働していることを確認するには、次のコマンドを実行します。

systemctl status postgresql

以下は、systemd で Postgres サービスを管理するためのその他の便利な systemctl コマンドです。

systemctl start postgresql
systemctl restart postgresql
systemctl stop postgresql
systemctl reload postgresql 		#this reloads the service configuration

PostgreSQL データベースのセキュリティ保護と構成

デフォルトでは、Postgres はロールの概念を使用してデータベース アクセス許可を管理し、データベース ロールは概念的にはオペレーティング システム ユーザーから完全に分離されています。ロールはユーザーまたはグループにすることができ、ログイン権限を持つロールはユーザーと呼ばれます。

新しく初期化されたシステムには常に、postgres という事前定義されたロールが 1 つ含まれています。このロールは、psql へのアクセスに使用される postgres というオペレーティング システム ユーザー アカウントと同じ名前を持ちます。 (Postgres シェル) およびその他のデータベース プログラム。

Postgres システム ユーザー アカウントはパスワードで保護されていません。安全にするために、passwd ユーティリティを使用してパスワードを作成できます。

passwd postgres

また、Postgres ロール (または必要に応じて管理データベース ユーザー) は、デフォルトでは保護されていません。パスワードで保護する必要もあります。次に、 図に示すように、postgres システム ユーザー アカウントと postgres ロールに切り替えます (強力で安全なパスワードを設定することを忘れないでください)。

su - postgres
psql -c "ALTER USER postgres WITH PASSWORD 'securepass_here';"

次に、postgres アカウントを終了してガイドを続行します。

クライアント認証の構成

メインの Postgres 構成ファイルは、/etc/postgresql/11/main/postgresql.conf にあります。このファイルに加えて、Postgres は、クライアント認証を制御する手動で編集された他の 2 つの構成ファイルを使用します。

クライアント認証は、/etc/postgresql/11/main/pg_hba.conf 構成ファイルによって制御されます。 Postgres は、パスワードベースの認証を含むさまざまなクライアント認証方法を提供します。クライアント接続は、クライアントのホスト アドレス、データベース、およびユーザーに基づいて認証されます。

パスワード ベースの認証を使用することを選択した場合は、次のいずれかの方法を実装できます: md5 またはパスワード。これらは接続を介してパスワードが送信される方法を除いて同様に動作します。 、 つまりそれぞれMD5 ハッシュ化とクリアテキストです。

MD5 パスワード認証を使用すると、ハッカーによるパスワードの盗聴を回避し、サーバーにパスワードが平文で保存されることを回避します。パスワード方式は、接続が SSL 暗号化によって保護されている場合にのみ安全に使用できます。

このガイドでは、 クライアント認証にMD5 パスワード認証を設定する方法を説明します。

vim /etc/postgresql/11/main/pg_hba.conf 

スクリーンショットに示すように、次の行を探して認証方法を md5 に変更します。

local   all             all                                     md5

ファイルの変更を保存して終了します。次に、次のようにPostgresサービスを再起動して、最近の変更を適用します。

systemctl restart postgresql

PostgreSQL での新しいデータベースとデータベース ロール/ユーザーの作成

この最後のセクションでは、新しいデータベース ユーザーとそれを管理するデータベース ロールを作成する方法を示します。まず、postgres アカウントに切り替えて、次のように Postgres シェルを開きます。

su - postgres
psql

「test_db 」 というデータベースを作成するには、次の SQL コマンドを実行します。

postgres=# CREATE DATABASE test_db;

次に、次のように新しいデータベースを管理するデータベース ユーザー (ログイン権限を持つロール) を作成します。

postgres=#CREATE USER test_user PASSWORD ‘securep@ss_here’;     #assumes login function by default

ユーザー test_user として test_db に接続するには、次のコマンドを実行します。

 
psql -d  test_db  -U test_user

詳細については、PostgreSQL 11 のドキュメントを参照してください。

結論

とりあえずそうだったら!このガイドでは、Debian 10PostgreSQL データベース サーバーをインストール、保護、構成する方法を説明しました。何か質問や意見はありますか?以下のコメントフォームを使用してご連絡ください。