Hướng Dẫn Cấu Hình Allow Remote Connection PostgreSQL Trên Ubuntu Và AlmaLinux

Views: 12 02/08/2026 16:17
Hướng Dẫn Cấu Hình Allow Remote Connection PostgreSQL Trên Ubuntu Và AlmaLinux

Mặc định PostgreSQL chỉ cho phép kết nối từ chính máy chủ (localhost). Khi triển khai ứng dụng Web, API, Docker hoặc cần quản lý cơ sở dữ liệu từ máy khác, bạn sẽ phải cấu hình PostgreSQL để cho phép kết nối từ xa (Remote Connection).

Trong bài viết này, chúng ta sẽ cấu hình PostgreSQL theo đúng quy trình gồm:

  • Cho phép PostgreSQL lắng nghe trên tất cả địa chỉ IP.

  • Cấu hình quyền truy cập bằng pg_hba.conf.

  • Mở cổng 5432 trên Firewall.

  • Khởi động lại dịch vụ PostgreSQL.

  • Kiểm tra kết nối từ máy khách.

Bước 1: Kiểm tra PostgreSQL đang hoạt động

Trước tiên hãy kiểm tra dịch vụ PostgreSQL.

sudo systemctl status postgresql

Hoặc với PostgreSQL 16:

sudo systemctl status postgresql-16

Kiểm tra cổng PostgreSQL đang lắng nghe:

ss -tlnp | grep 5432

Nếu PostgreSQL đang hoạt động, bạn sẽ thấy tiến trình đang sử dụng cổng 5432.

Bước 2: Cấu hình postgresql.conf

Tìm vị trí file cấu hình:

Ubuntu/Debian

sudo find /etc -name postgresql.conf

Thông thường:

/etc/postgresql/16/main/postgresql.conf

AlmaLinux/CentOS

sudo find /var/lib/pgsql -name postgresql.conf

Ví dụ:

/var/lib/pgsql/16/data/postgresql.conf

Mở file:

sudo nano postgresql.conf

Tìm dòng:

#listen_addresses = 'localhost'

Thay bằng:

listen_addresses = '*'

Hoặc:

listen_addresses = '0.0.0.0'

Thiết lập này cho phép PostgreSQL lắng nghe kết nối từ mọi địa chỉ IP.

Bước 3: Cấu hình pg_hba.conf

File pg_hba.conf quyết định máy nào được phép kết nối đến PostgreSQL.

Tìm file:

sudo find / -name pg_hba.conf

Mở:

sudo nano pg_hba.conf

Thêm vào cuối file:

Cho phép tất cả địa chỉ IP:

host    all     all     0.0.0.0/0       scram-sha-256

Hoặc chỉ cho phép một máy cụ thể:

host    all     all     192.168.1.100/32    scram-sha-256

Hoặc cho phép toàn bộ mạng LAN:

host    all     all     192.168.1.0/24      scram-sha-256

Khuyến nghị: Không nên sử dụng 0.0.0.0/0 trên môi trường Production nếu không có Firewall hoặc VPN bảo vệ.

Bước 4: Khởi động lại PostgreSQL

Ubuntu/DebiaSpecial Containern

sudo systemctl restart postgresql

AlmaLinux/CentOS

sudo systemctl restart postgresql-16

Kiểm tra lại:

ss -tlnp | grep 5432

Nếu cấu hình đúng sẽ hiển thị:

0.0.0.0:5432

Thay vì:

127.0.0.1:5432

Bước 5: Mở Firewall

Ubuntu (UFW)

sudo ufw allow 5432/tcp
sudo ufw reload

Kiểm tra:

sudo ufw status

AlmaLinux/CentOS (Firewalld)

sudo firewall-cmd --Special Containerpermanent --add-port=5432/tcp
sudo firewall-cmd --reload

Kiểm tra:

sudo firewall-cmd --list-ports

Bước 6: Tạo User Và Cấp Quyền

Đăng nhập PostgreSQL:

sudo -u postgres psql

Tạo User:

CREATE USER mailuser WITH PASSWORD 'YourPassword';

Cấp quyền cho Database:

GRANT ALL PRIVILEGES ON DATABASE mailserver TO mailuser;

Thoát:

\q

Bước 7: Kiểm Tra Kết Nối

Sử dụng lệnh:

psql -h 192.168.1.10 -U mailuser -d mailserver

Hoặc chuỗi kết nối:

Host=192.168.1.10
Port=5432
Database=mailserver
Username=mailuser
Password=YourPassword

Nếu đăng nhập thành công nghĩa là PostgreSQL đã cho phép Remote Connection.

Kiểm Tra Khi Không Kết Nối Được

Kiểm tra PostgreSQL đang lắng nghe:

ss -tlnp | grep 5432

Kiểm tra Firewall:

Ubuntu:

sudo ufw status

AlmaLinux:

sudo firewall-cmd --list-ports

Kiểm tra cổng từ máy khách:

nc -zv <IP_Server> 5432

Nếu cổng mở nhưng vẫn không kết nối được, hãy kiểm tra:

  • Sai Username hoặc Password.

  • Sai địa chỉ IP trong pg_hba.conf.

  • Firewall của hệ điều hành hoặc Cloud Firewall.

  • PostgreSQL chưa khởi động lại sau khi chỉnh cấu hình.

Ví Dụ Cấu Hình Hoàn Chỉnh

postgresql.conf

listen_addresses='*'
port=5432

pg_hba.conf

local   all             postgres                                peer
local   all             all                                     peer

host    all             all             127.0.0.1/32            scram-sha-256
host    all             all             ::1/128                 scram-sha-256

host    all             all             0.0.0.0/0               scram-sha-256
host    all             all             ::/0                    scram-sha-256

Chúc các bạn thành công

postgresql allow remote connection allow postgresql cấu hình postgresql remote postgresql.conf pg_hba.conf mở port 5432 postgresql postgresql ubuntu postgresql almalinux postgresql firewall kết nối postgresql từ máy khác