PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Не-суперпотребител не може да се свърже, ако сървърът не поиска парола, докато използва dblink

От документация :

и

Това означава, че вашият dblink обаждането използва dblink_connect имплицитно. Използвайте dblink_connect_u вместо това или променете метода си за удостоверяване на напр. 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 удостоверена връзка. Има една възможност, която виждам. PostgreSQL има две различни типове връзки:хост иместен .

Работи:

psql -h localhost ..

включва хост връзка, но

dblink_connect('mycon','dbname=vchitta_op user=caixa password=caixa');

използваместен тип, така че ако имате метод без парола за локална връзка (например идентификационен метод или доверие), тогава той се връща

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изберете динамичен набор от колони от таблица и получете сумата за всяка

  2. Изгледи на списъци на PostgreSQL

  3. Спрете (продължителното) изпълнение на SQL заявка в PostgreSQL, когато сесия или заявки вече не съществуват?

  4. Изтриването на ред от основната таблица влияе ли върху изгледа на тази таблица?

  5. Cayenne, Postgres:генериране на първичен ключ