sql >> Databáze >  >> RDS >> PostgreSQL

Non-superuser se nemůže připojit, pokud server při používání dblink nepožaduje heslo

Z dokumentace :

a

To znamená, že váš dblink volání používá dblink_connect implicitně. Použijte dblink_connect_u místo toho nebo změňte svou metodu ověřování např. md5.

Všimněte si, že také potřebujete udělit oprávnění ke spuštění caixa role, například:

GRANT EXECUTE ON FUNCTION dblink_connect_u(text) TO caixa;
GRANT EXECUTE ON FUNCTION dblink_connect_u(text, text) TO caixa;

Pracovní příklad (po 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');

UPRAVIT:

Omlouvám se za trochu zavádějící odpověď. Samozřejmě ne potřebujete dblink_connect_u pro md5 ověřené připojení. Je tu jedna možnost, kterou vidím. PostgreSQL má dva různé typy připojení:hostitel a místní .

Spuštěno:

psql -h localhost ..

zahrnuje připojení hostitele, ale

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

používá místní type, takže pokud máte pro místní připojení metodu bez hesla (například metodu ident nebo trust), vrátí se

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.

Zkontrolujte

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

pro hostitele spojení. Pokud je to možné, pro jasnost zveřejněte svůj pg_hba.conf .

Také jsem zkontroloval, co je s CONNECT oprávnění na vchitta_op DB, ale chybová zpráva je jiná:

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. Jak sloučit pole dohromady a zobrazit výstup v php a sql

  2. Jak Asinh() funguje v PostgreSQL

  3. Jak průběžně odstraňovat cokoli staršího než 10 nových záznamů z databáze MySQL (možná v JPQL/JPA)

  4. Prohledávání MySQL pomocí PHP