目次:
- 前提条件
- PostgreSQLのインストール
- PostgreSQLのロールと認証方法
- PostgreSQLロールとデータベースの作成
- PostgreSQLサーバーへのリモートアクセスを有効にする
- 結論
多くの場合、単にPostgresとして知られるPostgreSQLは、オープンソースの汎用オブジェクトリレーショナルデータベース管理システムです。 PostgreSQLには、オンラインバックアップ、ポイントインタイムリカバリ、ネストされたトランザクション、SQLおよびJSONクエリ、マルチバージョン同時実行制御(MVCC)、非同期レプリケーションなど、多くの高度な機能があります。
このチュートリアルでは、Debian 9にPostgreSQLをインストールする方法を示し、基本的なデータベース管理の基礎を探ります。
前提条件
このチュートリアルを進める前に、必ずsudo権限を持っているようにログインしているユーザーを作ります。
PostgreSQLのインストール
この記事を書いている時点で、Debianリポジトリから入手できるPostgreSQLの最新バージョンはPostgreSQLバージョン9.6です。
あなたのDebianサーバにPostgreSQLをインストールするには、次の手順を実行します。
-
ローカルパッケージインデックスを更新することにより開始します。
sudo apt update
PostgreSQLサーバーおよびPostgreSQLデータベースに追加機能を提供するPostgreSQL contribパッケージをインストールします。
sudo apt install postgresql postgresql-contrib
インストールが完了すると、PostgreSQLのサービスが自動的に起動します。 インストールを確認するには、
psql
ユーティリティを使用してPostgreSQLデータベースサーバーに接続し、サーバーバージョンを出力します。sudo -u postgres psql -c "SELECT version();"
出力は次のようになります。
version ----------------------------------------------------------------------------------------------------------- PostgreSQL 9.6.10 on x86_64-pc-linux-gnu, compiled by gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516, 64-bit (1 row)
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のrootユーザと同等です。
PostgreSQLサーバーにpostgresユーザーとしてログインするには、まずユーザーpostgresに切り替える必要があります。その後、
psql
ユーティリティを使用してPostgreSQLプロンプトにアクセスできます。
sudo su - postgres
psql
ここからは、あなたのPostgreSQLインスタンスと対話することができます。 PostgreSQLシェルを終了するには、次のように入力します。
\q
sudo
コマンドを使用して、ユーザーを切り替えずにPostgreSQLプロンプトにアクセスできます。
sudo -u postgres psql
通常、
postgres
ユーザーはローカルホストからのみ使用され、このユーザーのパスワードを設定しないことをお勧めします。
PostgreSQLロールとデータベースの作成
あなたは使用してコマンドラインから新しい役割を作成することができ
createuser
コマンドを。
CREATEROLE
特権を
CREATEROLE
スーパーユーザーとロールのみが新しいロールを作成できます。
次の例では、
john
という名前の新しいロールを
johndb
という名前のデータベースに作成し、データベースに対する特権を付与します。
-
新しいPostgreSQLの役割を作成します。
次のコマンドは、ジョンという名前の新しいロールを作成します。
sudo su - postgres -c "createuser john"
新しいPostgreSQLデータベースを作成します。
使用johndbという名前の新しいデータベースを作成
createdb
コマンドを:sudo su - postgres -c "createdb johndb"
権限の付与
前の手順で作成したデータベースの
john
ユーザーにアクセス許可を付与するには、PostgreSQLシェルに接続します。sudo -u postgres psql
そして次のクエリを実行します。
grant all privileges on database johndb to john;
PostgreSQLサーバーへのリモートアクセスを有効にする
デフォルトでは、PostgreSQLサーバーはローカルインターフェース
127.0.0.1
のみリッスンします。 PostgreSQLサーバーへのリモートアクセスを有効にするには、構成ファイル
postgresql.conf
を開き、
listen_addresses = '*'
CONNECTIONS AND AUTHENTICATION
セクションに
listen_addresses = '*'
を追加します。
sudo vim /etc/postgresql/9.6/main/postgresql.conf
/etc/postgresql/9.6/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/9.6/main/pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD # The user jane will be able to access all databases from all locations using a 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 a 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 9サーバーにPostgreSQLをインストールして設定する方法を学びました。 このトピックの詳細については、PostgreSQLドキュメントを参照してください。
debian postgresqlデータベース