sql >> Databasteknik >  >> RDS >> PostgreSQL

Icke-superanvändare kan inte ansluta om servern inte begär ett lösenord när dblink används

Från dokumentation :

och

Det betyder att din dblink samtalet använder dblink_connect implicit. Använd dblink_connect_u istället eller ändra din autentiseringsmetod till t.ex. md5.

Observera att du också behöver ge exekveringsbehörighet till caixa roll, till exempel genom:

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

Arbetsexempel (efter 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');

EDIT:

Ursäkta för lite missvisande svar. Naturligtvis gör du inte behöver dblink_connect_u för md5 autentiserad anslutning. Det finns en möjlighet som jag ser. PostgreSQL har två olika anslutningstyper:värd och lokala .

Kör:

psql -h localhost ..

innehåller värdanslutning, men

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

använder lokal typ, så om du har en icke-lösenordsmetod för lokal anslutning (till exempel ident-metod eller trust), så returnerar den

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.

Kontrollera

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

för värd förbindelse. För tydlighetens skull om möjligt vänligen posta din pg_hba.conf .

Jag kollade också vad med CONNECT privilegium på vchitta_op DB, men felmeddelandet är annorlunda:

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. Genererar SQL-fråga baserat på URL-parametrar

  2. Postgresql-socket-fel på OSX 10.7.3 när du kör Djangos syncdb

  3. php:sessioner kontra databas

  4. TSQL-2008 SUM(X) ÖVER (PARTITION ... ORDER BY CLAUSE)