web-dev-qa-db-ja.com

Postgres:「postgres」のユーザーマッピングが見つかりません

スキーマ「apm」に接続しています

関数を実行しようとすると、以下のエラーが発生します:

ERROR: user mapping not found for "postgres"

データベース接続情報は言う:postgres @ PostgreSQL 9.6のapm

psqlバージョン:PostgreSQL 9.6.3、Visual C++ビルド1800、64ビットでコンパイル

このエラーに対処するにはどうすればよいですか。ありがとう。

6
Vikram

これは、外部テーブルを使用しようとしていて、ロール(この場合はpostgres)にリモートサーバーのユーザーとパスワードが定義されていないことを意味します。

これを追加するには、次のクエリを実行します。

 CREATE USER MAPPING
    FOR postgres
 SERVER remote_server_name
OPTIONS (user 'bob', password 'secret');

あなたはそのようなテーブルのサーバー名を得ることができます:

SELECT srvname
  FROM pg_foreign_table t
  JOIN pg_foreign_server s ON s.oid = t.ftserver
 WHERE ftrelid = 'schemaname.tablename'::regclass
12

https://www.postgresql.org/docs/current/static/sql-createusermapping.html

CREATE USER MAPPING —外部サーバーへのユーザーの新しいマッピングを定義します

関数は、ユーザーマッピングが必要なサーバーを使用して外部テーブルをクエリします。どうやら、それはあなたのためではなく、ユーザー所有者のために存在しています。または、ユーザーマッピングが作成されているユーザーで関数を実行します。

あなたはそれらを見ることができます:

SELECT um.*,rolname
  FROM pg_user_mapping um
  JOIN pg_roles r ON r.oid = umuser
  JOIN pg_foreign_server fs ON fs.oid = umserver;
4
Vao Tsun

すべてのユーザーのユーザーマッピングを作成する場合は、次のようにします。

CREATE USER MAPPING
FOR PUBLIC
SERVER remote_server_name
OPTIONS (user 'bob', password 'secret');
1
Zaytsev Dmitry