2009-08-17 46 views
44

Tôi đã cài đặt PostgreSQL trên máy chủ cục bộ của mình (Ubuntu) với IP 192.168.1.10. Bây giờ, tôi đang cố gắng truy cập cơ sở dữ liệu từ máy khách của tôi (Ubuntu) với IP 192.168.1.11 với pgAdmin.Không thể kết nối PostgreSQL với cơ sở dữ liệu từ xa bằng pgAdmin

Tôi biết tôi phải thực hiện thay đổi trong postgresql.conf và pg_hba.conf để cho phép máy khách kết nối. Bạn có thể hướng dẫn tôi không?

+0

Bạn có gặp lỗi không? nếu có, lỗi gì? – krishna

+0

Đây không thực sự là một câu hỏi lập trình. Mặc dù, hãy thêm một dòng ghi là "lưu trữ tất cả tất cả 192.168.1.0/24 md5" trong dữ liệu/pg_hba.conf – nos

+0

Lỗi bạn đang nhận được là gì? Lệnh nào bạn đang thực hiện để kết nối với cơ sở dữ liệu từ máy chủ khác nhau? Những gì bạn đang suy nghĩ để thay đổi trong postgresql.conf và pg_hba.conf? – Space

Trả lời

100

Đây thực sự là quy trình 3 bước để kết nối với máy chủ PostgreSQL từ xa thông qua pgAdmin3.

Lưu ý: Tôi sử dụng Ubuntu 11.04 và PostgreSQL 8.4.

  1. Bạn phải chắc PostgreSQL nghe cho các kết nối TCP đến từ xa bởi vì các thiết lập mặc định cho phép để nghe chỉ cho các kết nối trên giao diện loopback. Để có thể đạt được các máy chủ từ xa, bạn phải thêm dòng sau vào file /etc/postgresql/8.4/main/postgresql.conf:

    listen_addresses = '*'

  2. PostgreSQL theo mặc định từ chối tất cả các kết nối mà nó nhận được từ bất kỳ địa chỉ từ xa, bạn có để thư giãn các quy tắc bằng cách thêm dòng này để /etc/postgresql/8.4/main/pg_hba.conf:

    chủ tất cả mọi 0.0.0.0/0 md5

    Đây là một quy tắc kiểm soát truy cập mà cho phép bất cứ ai đăng nhập từ bất kỳ địa chỉ nào nếu anh ta có thể cung cấp một mật khẩu hợp lệ (từ khóa md5). Bạn có thể sử dụng mạng/mặt nạ cần thiết thay vì 0.0.0.0/0.

  3. Khi bạn đã áp dụng những sửa đổi này cho tệp cấu hình của mình, bạn cần khởi động lại máy chủ PostgreSQL. Bây giờ có thể đăng nhập vào máy chủ của bạn từ xa, sử dụng tên người dùng và mật khẩu.

+5

Để khởi động máy chủ PostgresSQL trong ubuntu 'sudo /etc/init.d/postgresql stop' và' sudo /etc/init.d/postgresql start'. Tôi googled cho điều này. Vì vậy, thêm nó ở đây cho những người không biết lệnh để khởi động lại dịch vụ – ganesshkumar

+0

Cảm ơn bạn rất nhiều! Tôi đã tìm kiếm hàng giờ và câu trả lời này là điều cuối cùng đã giải quyết được vấn đề của tôi đối với PostgreSQL 9.5. Bước thứ hai đặc biệt đã làm nó. – Alexander

+1

Trong RedHat '/ var/lib/pgsql/9.4/dữ liệu/pg_hba.conf' –

8

Nếu bạn đang sử dụng PostgreSQL 8 trở lên, bạn có thể cần phải sửa đổi cài đặt listen_addresses trong /etc/postgresql/8.4/main/postgresql.conf.

Hãy thử thêm dòng:

listen_addresses = * 

mà sẽ cho PostgreSQL để lắng nghe cho các kết nối trên tất cả các giao diện mạng.

Nếu không được đặt rõ ràng, cài đặt này mặc định là localhost có nghĩa là nó sẽ chỉ chấp nhận kết nối từ cùng một máy.

0

Tôi không phải thay đổi tệp prostgresql.conf nhưng tôi phải làm như sau dựa trên psql qua dòng lệnh đang kết nối và pgAdmin không kết nối trên RDS với AWS.

Tôi đã đặt RDS của mình thành Có thể truy cập công khai. Tôi chắc chắn ACL của tôi và nhóm an ninh đã rộng mở và vẫn còn vấn đề như vậy, tôi đã làm như sau: sudo find . -name *.conf sau đó sudo nano ./data/pg_hba.conf sau đó thêm vào đầu của chỉ thị trong tập tin pg_hba.conf host all all 0.0.0.0/0 md5 và pgAdmin tự động đăng nhập tôi trong.

này cũng làm việc trong tập tin pg_hba.conf host all all md5 mà không cần bất kỳ địa chỉ IP và điều này cũng làm việc với địa chỉ IP của tôi host all all <myip>/32 md5

Là một mặt lưu ý, RDS của tôi là trong VPC mặc định của tôi. Tôi đã có một trường hợp RDS giống hệt trong VPC không mặc định của tôi với nhóm bảo mật giống hệt nhau, ACL và các thiết lập nhóm bảo mật cho VPC mặc định của tôi và tôi không thể làm cho nó hoạt động. Không chắc tại sao nhưng, đó là một ngày khác.

0

Đối với linux redhat

sudo vi /var/lib/pgsql9/data/postgresql.conf 

pgsql9 là thư mục cho các phiên bản postgres cài đặt, có thể khác nhau cho những người khác

thay đổi listen_addresses = '*' từ 'localhost' listen_addresses = và sau đó

sudo /etc/init.d/postgresql stop 
sudo /etc/init.d/postgresql start 
Các vấn đề liên quan