Bạn đang cố gắng kết nối với PostgreSQL trên localhost
sử dụng tập lệnh chạy trên máy tính của bạn, nhưng không có máy chủ PostgreSQL nào chạy ở đó.
Để điều này hoạt động, bạn phải ssh đến máy chủ từ xa, sau đó chạy tập lệnh Python của bạn ở đó, nơi máy chủ PostgreSQL là "cục bộ" so với tập lệnh Python.
(Đó là lý do tại sao chạy psql
hoạt động - vì bạn đang chạy nó trên máy chủ từ xa , trong đó PostgreSQL là "cục bộ" so với psql
).
Ngoài ra, bạn có thể:
-
Sử dụng đường hầm SSH để chuyển tiếp cổng PostgreSQL từ máy tính cục bộ sang máy tính từ xa; hoặc
-
Kết nối trực tiếp qua TCP / IP với máy chủ PostgreSQL từ xa bằng tên máy chủ hoặc địa chỉ IP của nó, sau khi bật kết nối từ xa trên máy chủ.
Lưu ý rằng chỉ đặt địa chỉ IP của máy chủ hoặc tên máy chủ vào chuỗi kết nối thay vì localhost
sẽ không hoạt động trừ khi bạn cũng định cấu hình máy chủ để chấp nhận kết nối từ xa . Bạn phải đặt listen_addresses
để lắng nghe các kết nối không cục bộ, thêm bất kỳ quy tắc tường lửa bắt buộc nào, đặt pg_hba.conf
để cho phép kết nối từ các máy từ xa và tốt nhất là thiết lập SSL. Tất cả điều này được đề cập trong chương Xác thực Máy khách của hướng dẫn sử dụng PostgreSQL.
Có thể bạn sẽ thấy đường hầm SSH đơn giản và dễ hiểu hơn.