Nếu bạn thử kết nối với máy chủ cơ sở dữ liệu PostgreSQL từ máy trạm và gặp lỗi.
could not connect to server: Connection refused (0x0000274D/10061)
Hãy thực hiện theo các bước sau đây, bạn sẽ có thể kích hoạt quyền truy cập từ xa vào máy chủ cơ sở dữ liệu PostgreSQL.
Trước khi bắt đầu, điều quan trọng là phải biết rằng có hai file cấu hình kiểm soát cách thức hoạt động của máy chủ cơ sở dữ liệu Postgre, chứa các cài đặt cần được điều chỉnh hoặc thay đổi để làm cho phiên bản cơ sở dữ liệu của bạn.
- postgresql.conf (Được sử dụng để đặt các tham số khác nhau ảnh hưởng đến cơ sở dữ liệu)
- pg_hba.conf (Được sử dụng để kiểm soát xác thực ứng dụng khách, HBA có nghĩa là “Xác thực dựa trên máy chủ”)
Các file đề cập ở trên có thể được tìm thấy tại đường dẫn
/etc/postgresql/9.3/main/
Bạn cũng có thể truy vấn vị trí của các tệp này từ psql CLI:
sudo -u postgres psql
show config_file;
Để cho phép truy cập từ xa trước tiên, chúng ta cần thay đổi cài đặt list_addresses trong file postgresql.conf
Tìm dòng
#listen_addresses = 'localhost'
và thay đổi nó thành
list_addresses = '*'
Tiếo theo ta mở file pg_hba.conf tìm dòng
host all all 127.0.0.1/32 md5
và thêm vào bên dưới
host all all 0.0.0.0/0 md5
Khởi động lại Postgresql để thay đổi có hiệu lực bằng cặp lệnh
sudo service postgresql stop
sudo service postgresql start
Sau khi khởi động lại cơ sở dữ liệu của bạn sẽ cho phép kết nối từ các máy trạm từ xa.
Lưu ý: Đảm bảo tường lửa của máy chủ của bạn không chặn bất kỳ yêu cầu nào, bạn cé thể check xem port 5432 có OPEN hay không tại Open port check tool
Nếu port 5432 ở trạng thái CLOSE, bạn chạy lệnh sau thông qua SSH
iptables -I INPUT -p tcp --dport 5432 -m state --state NEW -j ACCEPT
Check lại nếu OPEN là đã có thể kết nối được từ xa, chúc bạn thành công!