Cấu hình cho phép kết nối từ xa vào cơ sở dữ liệu Postgres

1- Kết nối từ xa vào Postgres

Đôi khi bạn tạo một kết nối từ xa vào một cơ sở dữ liệu Postgres và nhận được một thông báo lỗi như sau:
could not connect to server: Connection refused (0x0000274D/10061)
Nguyên nhân là cơ sở dữ liệu đó chỉ chấp nhận các kết nối nội bộ, và vì vậy bạn cần cấu hình Postgres để nó chấp nhận các các nối từ xa.
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 Postgres, và bạn cần thay đổi một vài thông số trên 2 file này.
  1. postgresql.conf
  2. pg_hba.conf
Bạn có thể tìm thấy 2 file trên trong thư mục:
  • /etc/postgresql/13/main  (Linux)
  • C:/Program Files/PostgreSQL/13/data  (Windows)

postgresql.conf

File postgresql.conf cho phép bạn cấu hình các địa chỉ IPPostgres sử dụng để lắng nghe các kết nối tới nó. Theo mặc định Postgres chỉ lắng nghe trên địa chỉ localhost, đây là lý do vì sao bạn không thể kết nối từ xa vào nó.
Mở Terminal trên Linux (Ubuntu,..) và chuyển tới thư mục chứa file postgresql.conf.
Với Linux (Ubuntu,..), sử dụng lệnh nano để mở và sửa đổi file postgresql.conf.
sudo nano postgresql.conf
Tìm dòng:
#listen_addresses = "localhost"
Và thay đổi nó thành:
listen_addresses = '*'
Việc thay đổi ở trên giúp Postgres có thể lắng nghe trên tất cả các địa chỉ IP của máy tính cài đặt nó. Bạn cũng có thể chỉ định một danh sách các địa chỉ lắng nghe (listen addresses) cho Postgres, chúng ngăn cách nhau bởi dấu phẩy.
listen_addresses = '192.168.0.1,112.113.10.1'
Tiếp theo, nhấn CTRL + O --> ENTER để lưu các thay đổi, và CTRL + X để thoát khỏi nano.

pg_hba.conf

File pg_hba.conf được sử dụng để xác thực máy khách (client), hay nói cách khác nó cho phép bạn chỉ định các máy khách được phép kết nối tới Postgres. Từ HBA là viết tắt của "Host-Based Authentication" (Xác thực dựa trên vật chủ).
Với Linux (Ubuntu,..) sử dụng lệnh nano để mở và sửa đổi file pg_hba.conf:
sudo nano pg_hba.conf
Tìm dòng:
# IPv4 local connections:
host     all      all    127.0.0.1/32    md5
Thay đổi nó thành:
# IPv4 local connections:
host     all      all    0.0.0.0/0   md5
Thay đổi ở trên sẽ cho phép mọi máy khách (client) kết nối tới Postgres.
Bạn cũng có thể cấu hình cho phép một dải IP được phép kết nối tới Postgres:
# IPv4 local connections:
host     all      all    112.100.20.1/30   md5
Cuối cùng khởi động lại Postgres để các thay đổi có tác dụng.
sudo service postgresql stop
sudo service postgresql start
Xem thêm: