PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Người không phải superuser không thể kết nối nếu máy chủ không yêu cầu mật khẩu trong khi sử dụng dblink

Từ tài liệu :

Điều đó có nghĩa là dblink của bạn cuộc gọi đang sử dụng dblink_connect ngầm hiểu. Sử dụng dblink_connect_u thay vào đó hoặc thay đổi phương thức auth của bạn thành v.d. md5.

Lưu ý rằng bạn cũng cần cấp đặc quyền thực thi cho caixa vai trò, ví dụ:

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

Ví dụ làm việc (sau 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');

CHỈNH SỬA:

Xin lỗi vì câu trả lời hơi sai lầm. Tất nhiên bạn không cần dblink_connect_u cho kết nối xác thực md5. Tôi thấy có một khả năng. PostgreSQL có hai khác nhau loại kết nối: máy chủ lưu trữ địa phương .

Đang chạy:

psql -h localhost ..

kết hợp kết nối máy chủ, nhưng

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

sử dụng địa phương nhập, vì vậy nếu bạn có phương thức không phải mật khẩu cho kết nối cục bộ (ví dụ:phương thức nhận dạng hoặc độ tin cậy), thì nó sẽ trả về

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.

Kiểm tra

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

cho máy chủ lưu trữ sự liên quan. Để rõ ràng nếu có thể, vui lòng đăng pg_hba.conf của bạn .

Tôi cũng đã kiểm tra những gì về CONNECT đặc quyền trên vchitta_op DB, nhưng thông báo lỗi khác:

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. Cách nhóm / chọn cột kiểu JSON (PG ::UndefinedFunction:ERROR:không thể xác định toán tử bình đẳng cho kiểu json)

  2. Chia các giá trị được phân tách bằng dấu phẩy thành bảng mục tiêu với số lượng cột cố định

  3. công cụ truy vấn pgadmin4 luôn quay lại khi chưa kết nối

  4. Thoát các dấu ngoặc kép trong shell cho postgresql

  5. Cài đặt PL / Ruby trên PostgreSQL 9.3