PostgreSQLまたはPostgresは、フォールトトレラントな環境や複雑なアプリケーションを構築できる多くの高度な機能を備えたオープンソースの汎用オブジェクトリレーショナルデータベース管理システムです。
このガイドでは、PostgreSQLデータベースサーバーをUbuntu 20.04にインストールする方法を説明し、PostgreSQLデータベース管理の基本を探ります。
前提条件#
パッケージをインストールするには、rootまたはsudo権限を持つユーザーとしてログインする必要があります。
UbuntuにPostgreSQLをインストールする#
この記事を書いている時点で、公式のUbuntuリポジトリから入手できるPostgreSQLの最新バージョンはPostgreSQLバージョン10.4です。
次のコマンドを実行して、PostgreSQLサーバーをUbuntuにインストールします。
sudo apt updatesudo apt install postgresql postgresql-contrib
また、PostgreSQLデータベースシステムにいくつかの追加機能を提供するPostgreSQLcontribパッケージもインストールしています。
インストールが完了すると、PostgreSQLサービスが自動的に開始されます。 psqlを使用します PostgreSQLデータベースサーバーに接続してそのバージョンを印刷することにより、インストールを確認するためのツール:
sudo -u postgres psql -c "SELECT version();" PostgreSQL 12.2 (Ubuntu 12.2-4) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 9.3.0-8ubuntu1) 9.3.0, 64-bit
それでおしまい。 PostgreSQLがインストールされており、使用を開始できます。
PostgreSQLの役割と認証方法#
PostgreSQL内のデータベースアクセス許可は、ロールの概念で処理されます。ロールは、データベースユーザーまたはデータベースユーザーのグループを表すことができます。
PostgreSQLは複数の認証方法をサポートしています。最も一般的に使用される方法は次のとおりです。
- 信頼-
pg_hba.confで定義されている条件である限り、ロールはパスワードなしで接続できます。 満たされています。 - パスワード-役割はパスワードを提供することで接続できます。パスワードは
scram-sha-256として保存できます 、md5、およびpassword(クリアテキスト)。 - Ident-TCP/IP接続でのみサポートされます。これは、オプションのユーザー名マッピングを使用して、クライアントのオペレーティングシステムのユーザー名を取得することで機能します。
- ピア-Identと同じですが、ローカル接続でのみサポートされます。
PostgreSQLクライアント認証は、pg_hba.confという名前の構成ファイルで定義されています。 。デフォルトでは、PostgreSQLはローカル接続にピア認証方式を使用しています。
postgres PostgreSQLをインストールすると、ユーザーが自動的に作成されます。このユーザーはPostgreSQLインスタンスのスーパーユーザーであり、MySQLルートユーザーと同等です。
postgresとしてPostgreSQLサーバーにログインするには ユーザー、最初にユーザーに切り替えてから、psqlを使用してPostgreSQLプロンプトにアクセスします ユーティリティ:
sudo su - postgrespsql
ここから、PostgreSQLインスタンスを操作できます。 PostgreSQLシェルタイプを終了するには:
\q
ユーザーを切り替えずにPostgreSQLプロンプトにアクセスする別の方法は、sudoを使用することです。 コマンド:
sudo -u postgres psql
通常、データベースサーバーにはpostgresとしてログインする必要があります ローカルホストからのみ。
PostgreSQLの役割とデータベースの作成#
CREATEROLEを持つスーパーユーザーとロールのみ 特権は新しい役割を作成できます。
次の例は、johnという名前の新しいロールを作成する方法を示しています。 johndbという名前のデータベース データベースに対する特権を付与します:
-
新しいPostgreSQLロールを作成します:
sudo su - postgres -c "createuser john" -
新しいPostgreSQLデータベースを作成します:
sudo su - postgres -c "createdb johndb"
データベース上のユーザーに権限を付与するには、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 セクション。
sudo nano /etc/postgresql/12/main/postgresql.conf /etc/postgresql/12/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
出力は、PostgreSQLサーバーがすべてのインターフェース(0.0.0.0)をリッスンしていることを示しています。 ):
LISTEN 0 244 0.0.0.0:5432 0.0.0.0:*
LISTEN 0 244 [::]:5432 [::]:*
次のステップは、pg_hba.confを編集して、リモート接続を受け入れるようにサーバーを構成することです。 ファイル。
以下は、さまざまなユースケースを示すいくつかの例です。
/etc/postgresql/12/main/pg_hba.conf# TYPE DATABASE USER ADDRESS METHOD
# The user jane can access all databases from all locations using md5 password
host all jane 0.0.0.0/0 md5
# The user jane can access only the janedb from all locations using md5 password
host janedb jane 0.0.0.0/0 md5
# The user jane can access all databases from a trusted location (192.168.1.134) without a password
host all jane 192.168.1.134 trust
最後のステップは、ポート5432を開くことです。 ファイアウォールで。
UFWを使用していると仮定します ファイアウォールを管理し、192.168.1.0/24からのアクセスを許可したい サブネットの場合、次のコマンドを実行します:
sudo ufw allow proto tcp from 192.168.1.0/24 to any port 5432 信頼できるIP範囲からの接続のみを受け入れるようにファイアウォールが構成されていることを確認してください。