Cấu hình để kết nối với PostgreSQL từ bên ngoài

Configure PostgreSQL to allow remote connection

Posted by Box XV on February 20, 2022. 2 min read.

Mặc định, sau khi cài đặt PostgreSQL, bạn chỉ có thể kết nối đến database từ localhost (tức là máy chủ hiện đang cài đặt PostgreSQL)

Tất nhiên là để kết nối được (kể cả trong localhost) bạn phải khởi động PostgreSQL lên trước đó đã nhé.

Bài viết này sẽ hướng dẫn bạn cấu hình để có thể kết nối đến PostgreSQL database từ một máy bên ngoài

Thử kết nối từ bên ngoài bằng công cụ.

Đầu tiên, bạn cần kết nối đến máy chủ cài đặt PostgreSQL bằng 1 công cụ ssh nào đó. Tôi thường dùng mRemoteNG hoặc XShell

Bạn chuyển sang user posgres bằng lệnh

su - postgres

Sau đó kết nối vào PostgreSQL trên localhost bằng lệnh

psql
psql (13.2)
Type "help" for help.

postgres=#

Như vậy là bạn đã kết nối vào PostgreSQL. Tuy nhiên, chỉ có đứng trên localhost bạn mới thực hiện được thôi, còn từ bên ngoài mạng vẫn chưa kết nối được.

Bằng chứng là bạn sử dụng một công cụ để quản lý PostgreSQL như DBeaver để kết nối vào bằng laptop của các bạn thì vẫn không được.

Giờ chúng ta sẽ cần làm theo các bước sau để có thể kết nối được:

1. Cấu hình file postgresql.conf

Đây là file chứa các tham số cấu hình của PostgreSQL, để tìm được đường dẫn đến file này, các bạn có thể kết nối vào PostgreSQL trên localhost và gõ lệnh show config_file;

postgres=# show config_file;
              config_file               
----------------------------------------
 /var/lib/pgsql/13/data/postgresql.conf
 /etc/postgresql/14/main/postgresql.conf
(1 row)

Chúng ta sẽ tìm thấy đường dẫn đến file postgresql.conf. Mở file đó ra bằng câu lệnh:

vi /var/lib/pgsql/13/data/postgresql.conf
vi /etc/postgresql/14/main/postgresql.conf

hoặc

sudo nano /etc/postgresql/14/main/postgresql.conf

Và tìm đến dòng:

listen_addresses = 'localhost'

và sửa lại thành

listen_addresses = '*'

Tiếp theo chúng ta sẽ cấu hinh file pg_hba.conf

2. Cấu hình file pg_hba.conf

Đây là file cho phép chúng ta định ra các luật cho phép user, ip được kết nối vào database cụ thể nào. Chúng ta sẽ cấu hình để mọi IP có thể truy cập được vào tất cả database nếu có username và password.

Để tìm được đường dẫn của file pg_hba.conf, chúng ta kết nối vào PostgreSQL và chạy lệnh

postgres=# show hba_file;
              hba_file              
------------------------------------
 /var/lib/pgsql/13/data/pg_hba.conf
 /etc/postgresql/14/main/pg_hba.conf
(1 row)

Chúng ta lại mở file pg_hba.conf bằng trình soạn thảo vi

vi /var/lib/pgsql/13/data/pg_hba.conf

hoặc

sudo nano /etc/postgresql/14/main/pg_hba.conf

Và thêm vào dòng sau:

host    all             all              0.0.0.0/0                       md5
host    all             all              0.0.0.0/0                       md5

hoặc

host all all 192.168.56.1/24 md5

3. Khởi động lại PostgreSQL

Bây giờ bạn cần restart lại PostgreSQL để các thay đổi có hiệu lực

systemctl stop postgresql-14
systemctl start postgresql-14

Như vậy là xong rồi đó. Chúc các bạn thành công.


Tham khảo: