PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Non-superuser tidak dapat terhubung jika server tidak meminta kata sandi saat menggunakan dblink

Dari dokumentasi :

dan

Itu berarti dblink Anda panggilan menggunakan dblink_connect secara implisit. Gunakan dblink_connect_u sebagai gantinya atau ubah metode autentikasi Anda menjadi mis. md5.

Perhatikan bahwa Anda juga perlu memberikan hak istimewa eksekusi ke caixa peran, misalnya dengan:

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

Contoh kerja (setelah 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:

Maaf untuk jawaban yang sedikit menyesatkan. Tentu saja Anda tidak perlu dblink_connect_u untuk koneksi terotentikasi md5. Ada satu kemungkinan yang saya lihat. PostgreSQL memiliki dua yang berbeda jenis koneksi:host dan lokal .

Berjalan:

psql -h localhost ..

menggabungkan koneksi host, tetapi

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

menggunakan lokal ketik, jadi jika Anda memiliki metode non-sandi untuk koneksi lokal (misalnya metode ident atau kepercayaan), maka ia akan kembali

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.

Periksa

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

untuk host koneksi. Untuk kejelasan, jika memungkinkan, harap posting pg_hba.conf Anda .

Saya juga memeriksa bagaimana dengan CONNECT hak istimewa di vchitta_op DB, tetapi pesan kesalahannya berbeda:

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. Rails:izin ditolak untuk relasi schema_migrations

  2. Ikhtisar Alat Penjadwalan Pekerjaan untuk PostgreSQL

  3. KESALAHAN:kesalahan sintaks pada atau di dekat OVER

  4. Bagaimana saya bisa menautkan spreadsheet Google ke PostgreSQL?

  5. Laporan Tren PostgreSQL 2019:Cloud Pribadi vs. Publik, Migrasi, Kombinasi Basis Data &Alasan Utama Digunakan