目次:
多くの場合、単にPostgresとして知られるPostgreSQLは、オープンソースの汎用オブジェクトリレーショナルデータベース管理システムです。 オンラインバックアップ、ポイントインタイムリカバリ、ネストされたトランザクション、SQLおよびJSONクエリ、マルチバージョン同時実行制御(MVCC)、非同期レプリケーションなど、多くの強力な機能を備えています。
このチュートリアルでは、Debian 10にPostgreSQLデータベースサーバーをインストールする手順を説明します。また、基本的なデータベース管理の基礎についても説明します。
PostgreSQLのインストール
この記事の執筆時点で、デフォルトのDebianリポジトリから入手できるPostgreSQLの最新バージョンはPostgreSQLバージョン11.5です。
DebianサーバーにPostgreSQLをインストールするには、rootまたはsudo特権を持つユーザーとして次の手順を実行します。
-
APTパッケージインデックスを更新することで起動します。
sudo apt update
PostgreSQLデータベースとPostgreSQLデータベースの追加機能を提供するcontribパッケージをインストールします。
sudo apt install postgresql postgresql-contrib
インストールが完了すると、PostgreSQLサービスが開始されます。 インストールを確認するには、
psql
ツールを使用してサーバーバージョンを印刷します。sudo -u postgres psql -c "SELECT version();"
出力は次のようになります。
PostgreSQL 11.5 (Debian 11.5-1+deb10u1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit
psql
は、PostgreSQLサーバーと対話できる対話型のターミナルプログラムです。
PostgreSQLの役割と認証方法
PostgreSQLは、ロールの概念を使用してデータベースアクセス許可を処理します。 ロールの設定方法に応じて、データベースユーザーまたはデータベースユーザーのグループを表すことができます。
PostgreSQLは、いくつかの認証方式をサポートしています。 最も頻繁に使用される方法は、以下のとおりです。
- 信頼-ロールは、
pg_hba.conf
定義された条件が満たされている限り、パスワードなしで接続できます。パスワード-ロールはパスワードを提供することで接続できます。 パスワードはscram-sha-256
md5
およびpassword
(clear-text)Identとして保存できます-TCP / IP接続でのみサポートされます。 オプションのユーザー名マッピングを使用して、クライアントのオペレーティングシステムユーザー名を取得することで機能します。ピア-Identと同じですが、ローカル接続でのみサポートされます。
PostgreSQLクライアント認証は、
pg_hba.conf
という名前の構成ファイルで定義されます。 ローカル接続の場合、PostgreSQLはピア認証方式を使用するように設定されます。
「postgres」ユーザーは、PostgreSQLのインストール時に自動的に作成されます。 このユーザーはPostgreSQLインスタンスのスーパーユーザーであり、MySQLルートユーザーと同等です。
「postgres」としてPostgreSQLサーバーにログインするには、ユーザーpostgresに切り替えて、
psql
ユーティリティを使用してPostgreSQLプロンプトにアクセスします。
sudo su - postgres
psql
ここから、PostgreSQLサーバーと対話できます。 PostgreSQLシェルを終了するには、次のように入力します。
\q
sudo
コマンドを使用して、ユーザーを切り替えずにPostgreSQLプロンプトにアクセスできます。
sudo -u postgres psql
通常、
postgres
ユーザーはローカルホストからのみ使用されます。
PostgreSQLの役割とデータベースの作成
createuser
コマンドを使用すると、コマンドラインから新しいロールを作成できます。
CREATEROLE
特権を
CREATEROLE
スーパーユーザーとロールのみが新しいロールを作成できます。
次の例では、
kylo
という名前の新しいロール、
kylo
という名前のデータベースを作成し、データベースに対する権限を
kylodb
に付与します。
-
まず、次のコマンドを発行して役割を作成します。
sudo su - postgres -c "createuser kylo"
次に、使用してデータベースを作成
createdb
コマンドを:sudo su - postgres -c "createdb kylodb"
データベースのユーザーにアクセス許可を付与するには、PostgreSQLシェルに接続します。
sudo -u postgres psql
次のクエリを実行します。
grant all privileges on database kylodb to kylo;
PostgreSQLのサーバへのリモートアクセスを有効にします
デフォルトでは、PostgreSQLサーバーはローカルインターフェース
127.0.0.1
のみリッスンします。
構成ファイル
postgresql.conf
を開き、
listen_addresses = '*'
CONNECTIONS AND AUTHENTICATION
セクションに
listen_addresses = '*'
を追加します。 これは、すべてのネットワークインタフェースをリッスンするようにサーバーに指示します。
sudo nano /etc/postgresql/11/main/postgresql.conf
/etc/postgresql/11/main/postgresql.conf
#------------------------------------------------------------------------------ # CONNECTIONS AND AUTHENTICATION #------------------------------------------------------------------------------ # - Connection Settings - listen_addresses = '*' # what IP address(es) to listen on;
ファイルを保存し、PostgreSQLサービスを再起動して、変更を有効にします。
sudo service postgresql restart
変化を確認し
ss
ユーティリティを:
ss -nlt | grep 5432
LISTEN 0 128 0.0.0.0:5432 0.0.0.0:* LISTEN 0 128:5432:*
出力は、PostgreSQLサーバーがすべてのインターフェイス(0.0.0.0)でリッスンしていることを示しているはずです。
最後の手順は、
pg_hba.conf
ファイルを編集して、リモートログインを受け入れるようにサーバーを構成することです。
以下は、異なる使用例を示すいくつかの例は以下のとおりです。
/etc/postgresql/11/main/pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD # The user jane will be able to access all databases from all locations using an md5 password host all jane 0.0.0.0/0 md5 # The user jane will be able to access only the janedb from all locations using an md5 password host janedb jane 0.0.0.0/0 md5 # The user jane will be able to access all databases from a trusted location (192.168.1.134) without a password host all jane 192.168.1.134 trust
結論
Debian 10でPostgreSQLをインストールおよび設定する方法を示しました。このトピックの詳細については、PostgreSQLのドキュメントを参照してください。
debian postgresqlデータベース