sql >> Database teknologi >  >> RDS >> PostgreSQL

Ikke-superbruger kan ikke oprette forbindelse, hvis serveren ikke anmoder om en adgangskode, mens du bruger dblink

Fra dokumentation :

og

Det betyder din dblink opkaldet bruger dblink_connect implicit. Brug dblink_connect_u i stedet eller ændre din godkendelsesmetode til f.eks. md5.

Bemærk, at du også skal give caixa udførelsesrettigheder rolle, for eksempel ved:

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

Arbejdseksempel (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:

Beklager lidt misvisende svar. Selvfølgelig gør du det ikke brug for dblink_connect_u til md5-godkendt forbindelse. Der er én mulighed, jeg ser. PostgreSQL har to forskellige forbindelsestyper:vært og lokale .

Kører:

psql -h localhost ..

inkorporerer værtsforbindelse, men

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

bruger lokal type, så hvis du har en metode uden adgangskode til lokal forbindelse (for eksempel ident-metode eller tillid), så returnerer 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.

Tjek

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

for vært forbindelse. For klarhed, hvis det er muligt, bedes du sende din pg_hba.conf .

Jeg har også tjekket, hvad med CONNECT privilegium på vchitta_op DB, men fejlmeddelelsen er anderledes:

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. Bedste måde at gemme tid over 24:00:00 i postgresql?

  2. Hvordan oprettes og udføres en dynamisk forespørgsel i oracle stored procedure?

  3. (har brug for råd) Tal med MySQL-serverdatabasen fra min Android-app

  4. Hvordan sletter man en række poster på én gang på MySQL?