sql >> Database >  >> RDS >> PostgreSQL

Niet-superuser kan geen verbinding maken als de server geen wachtwoord vraagt ​​tijdens het gebruik van dblink

Uit documentatie :

en

Dat betekent uw dblink oproep gebruikt dblink_connect impliciet. Gebruik dblink_connect_u in plaats daarvan of wijzig uw auth-methode in b.v. md5.

Merk op dat u ook uitvoeringsrechten moet verlenen aan caixa rol, bijvoorbeeld door:

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

Werkvoorbeeld (na 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');

BEWERKEN:

Sorry voor enigszins misleidend antwoord. Natuurlijk niet heb dblink_connect_u . nodig voor md5 geauthenticeerde verbinding. Er is één mogelijkheid die ik zie. PostgreSQL heeft twee verschillende verbindingstypen:host en lokaal .

Hardlopen:

psql -h localhost ..

bevat hostverbinding, maar

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

gebruikt lokaal type, dus als je een niet-wachtwoordmethode hebt voor lokale verbinding (bijvoorbeeld ident-methode of vertrouwen), dan retourneert het

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.

Controleer

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

voor host verbinding. Plaats voor de duidelijkheid indien mogelijk uw pg_hba.conf .

Ik heb ook gekeken hoe het zit met CONNECT privilege op vchitta_op DB, maar de foutmelding is anders:

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. FOUT:kon bibliotheek "/opt/PostgreSQL/9.0/lib/postgresql/plperl.so" niet laden:libperl.so:

  2. Dubbele rijen verwijderen uit oracle

  3. mysql LIKE-query duurt te lang

  4. Records dupliceren / kopiëren in dezelfde MySQL-tabel