GNU/Linux >> Linux の 問題 >  >> Linux

psql を使用して PostgreSQL データベースへのリモート接続を許可する方法

PostgreSQL をインストールすると、デフォルトでは TCP/IP を使用したデータベースへの接続は許可されません。

psql コマンドを使用してクライアントからリモート PostgreSQL データベースに接続しようとすると、「psql:サーバーに接続できませんでした:接続が拒否されました」というエラー メッセージが表示される場合があります。

次の例では、クライアント マシンから、192.168.102.1 サーバーで実行されている PostgreSQL データベースに接続しようとしています。出力からわかるように、リモート PostgreSQL データベースが接続を受け入れていないことが明確に示されています。

# psql -U postgres -h 192.168.102.1
psql: could not connect to server: Connection refused
        Is the server running on host "192.168.102.1" and accepting
        TCP/IP connections on port 5432?

PostgreSQL データベースの TCP/IP 接続を有効にするには、以下の 2 つの手順に従う必要があります。

1. pg_hba.conf を変更して、クライアント認証レコードを追加します

PostgreSQL データベース サーバーでは、デフォルトで、/var/lib/pgsql/data/pg_hba.conf の末尾に向かって次のレコードが表示されます。以下に示すように、localhost からの接続のみを受け入れます。

# IPv4 local connections:
host    all         all         127.0.0.1/32          trust
# IPv6 local connections:
host    all         all         ::1/128               ident

次の行を pg_hba.conf サーバーに追加します。これにより、「192.168.101.20」IP アドレスからの接続が許可されます (これは、この例のクライアントです)。特定のネットワーク上の複数のクライアント マシンからの接続を許可する場合は、ここでネットワーク アドレスを CIDR アドレス形式で指定します。

# vi  /var/lib/pgsql/data/pg_hba.conf
host    all         all         192.168.101.20/24    trust

以下は、pg_hba.conf ファイルでサポートされているさまざまなクライアント認証レコード形式です。このリストの #2 形式を使用しています。

  • ローカル データベース ユーザーの認証方法 [認証オプション]
  • ホスト データベース ユーザー CIDR-アドレス 認証方法 [認証オプション]
  • hostssl データベース ユーザー CIDR-アドレス 認証方法 [認証オプション]
  • hostnossl データベース ユーザー CIDR-address 認証方法 [認証オプション]

「CIDR アドレス」形式の代わりに、次のレコード形式を使用して、IP アドレスとネットワーク マスクを別々のフィールドに指定することもできます。

  • ホスト データベース ユーザーの IP アドレス IP マスク 認証方法 [認証オプション]
  • hostssl データベース ユーザーの IP アドレス IP マスク 認証方法 [認証オプション]
  • hostnossl データベース ユーザーの IP アドレス IP マスク 認証方法 [認証オプション]

2. postgresql.conf のリッスン アドレスを変更する

PostgreSQL データベース サーバーでは、以下に示すように、デフォルトでリッスン アドレスは postgresql.conf ファイルの localhost になります。

# grep listen /var/lib/pgsql/data/postgresql.conf
listen_addresses = 'localhost'

この行を変更して、*.サーバーに複数のインターフェースがある場合は、リッスンする特定のインターフェースを指定することもできます。

# grep listen /var/lib/pgsql/data/postgresql.conf
listen_addresses = '*'

3.リモート接続をテストする

ここで、クライアント マシン 192.168.101.20 にログインし、以下に示すように PostgreSQL データベース サーバー (192.168.102.1) への psql リモート接続を実行します。今回はうまくいくはずです。

# psql -U postgres -h 192.168.102.1
Welcome to psql 8.1.11 (server 8.4.18), the PostgreSQL interactive terminal.
postgres=#

また、毎回コマンド ライン パラメータでホスト名を指定したくない場合は、以下に示すように、PGHOST 環境変数名でリモート PostgreSQL データベースの IP アドレスを設定できます。

# export PGHOST=192.168.102.1
# psql -U postgres
Welcome to psql 8.1.11 (server 8.4.18), the PostgreSQL interactive terminal.
postgres=#

Linux
  1. コマンドラインからPostgresqlデータベースにログインする方法

  2. phpMyAdminを使用してデータベースを検索する方法

  3. LinuxでリモートMySQL接続を追加するにはどうすればよいですか?

  1. PostgreSQLでデータベースを作成する方法

  2. PostgreSQLでデータベースをバックアップおよび復元する方法

  3. MySQLデータベースサーバーへのリモート接続を許可する方法

  1. Ubuntu20.04にPostgreSQLをインストールする方法

  2. Debian10にPostgreSQLをインストールする方法

  3. Ansibleを使用してリモートWindowsホストを管理する方法