ドキュメント から :
および
つまり、 dblink
呼び出しはdblink_connect
を使用しています
暗黙のうちに。 dblink_connect_u
を使用します
代わりに、またはauthメソッドをたとえばに変更します。 md5。
caixa
にも実行権限を付与する必要があることに注意してください 役割、例:
GRANT EXECUTE ON FUNCTION dblink_connect_u(text) TO caixa;
GRANT EXECUTE ON FUNCTION dblink_connect_u(text, text) TO caixa;
実例(GRANT
の後 ):
meta=> SELECT dblink_connect_u('conn1', 'dbname=op');
meta=> SELECT * FROM dblink('conn1','SELECT op_col from op_table')
AS t(op_col varchar);
op_col
--------
aaa
bbb
ccc
(3 rows)
meta=> SELECT dblink_disconnect('conn1');
編集:
少し誤解を招くような答えでごめんなさい。もちろん、あなたはしない dblink_connect_u
が必要です md5認証済み接続の場合。私が見る1つの可能性があります。 PostgreSQLには2つの異なるがあります 接続タイプ:ホスト およびローカル 。
実行中:
psql -h localhost ..
ホスト接続が組み込まれていますが、
dblink_connect('mycon','dbname=vchitta_op user=caixa password=caixa');
ローカルを使用 入力するので、ローカル接続にパスワード以外のメソッド(たとえば、identメソッドやtrust)がある場合は、それが返されます
ERROR: password is required
DETAIL: Non-superuser cannot connect if the server does not request a password.
HINT: Target server's authentication method must be changed.
チェック
dblink_connect('mycon','hostaddr=127.0.0.1 dbname=vchitta_op user=caixa password=caixa')
ホストの場合 繋がり。可能であれば明確にするために、pg_hba.conf
を投稿してください 。
CONNECT
についても確認しました vchitta_op
の特権 DB、ただしエラーメッセージは異なります:
REVOKE CONNECT ON DATABASE vchitta_op FROM PUBLIC;
REVOKE CONNECT ON DATABASE vchitta_op FROM caixa;
SELECT dblink_connect('mycon','dbname=vchitta_op user=caixa password=caixa');
ERROR: could not establish connection
DETAIL: FATAL: permission denied for database "vchitta_op"
DETAIL: User does not have CONNECT privilege.