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


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

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

PostgreSQLは、Apple、Fujitsu、Red Hat、Cisco、JuniperNetworkなどの有名なテクノロジー企業によって使用されています。

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

  1. Install a Debian 10 (Buster) Minimal Server

Debian10へのPostgreSQLサーバーのインストール

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

# 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 ‘[email protected]_here’;     #assumes login function by default

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

 
$ psql -d  test_db  -U test_user

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

それは今のところです!このガイドでは、Debian 10にPostgreSQLデータベースサーバーをインストール、保護、構成する方法を示しました。共有する質問や考えはありますか?以下のコメントフォームを使用して、私たちに連絡してください。