Cách cài PostgreSQL trên Ubuntu VPS và tạo database đầu tiên
Hướng dẫn cài PostgreSQL trên Ubuntu VPS, tạo người dùng và cơ sở dữ liệu đầu tiên, sau đó kiểm tra kết nối an toàn bằng dòng lệnh.
- 8 phút đọc
- 2 lượt xem

PostgreSQL là hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở, thường được dùng cho ứng dụng web, dịch vụ nội bộ và nhiều dự án cần lưu trữ dữ liệu có cấu trúc. Cài PostgreSQL trên Ubuntu VPS không quá phức tạp nếu bạn nắm các lệnh cơ bản và hiểu cách phân quyền cho người dùng cơ sở dữ liệu.
Trong bài viết này, bạn sẽ đi qua toàn bộ quy trình: chuẩn bị VPS, cài PostgreSQL, tạo tài khoản và database, kiểm tra kết nối, đồng thời xem một số lưu ý bảo mật quan trọng. Các bước áp dụng cho Ubuntu VPS có quyền quản trị sudo; tên gói và cấu hình cụ thể có thể khác đôi chút tùy phiên bản Ubuntu.
1. Chuẩn bị Ubuntu VPS trước khi cài đặt

Trước tiên, hãy kết nối tới máy chủ bằng SSH. Trên máy tính cá nhân, chạy lệnh sau và thay user cùng IP_VPS bằng thông tin đăng nhập của bạn:
ssh user@IP_VPSNếu VPS mới tạo, hãy kiểm tra bạn có quyền dùng sudo. Lệnh dưới đây hiển thị phiên bản Ubuntu đang chạy:
lsb_release -aTiếp theo, làm mới danh sách gói phần mềm:
sudo apt updateBạn có thể cập nhật các gói hiện có bằng lệnh sudo apt upgrade. Trên máy chủ đang vận hành ứng dụng, nên kiểm tra lịch bảo trì và các thay đổi có thể ảnh hưởng dịch vụ trước khi nâng cấp. Đảm bảo VPS còn đủ dung lượng đĩa cho hệ điều hành, PostgreSQL và dữ liệu dự kiến lưu trữ.
Để kiểm tra dung lượng còn trống, dùng:
df -hPostgreSQL sẽ cài dịch vụ cơ sở dữ liệu lên VPS. Vì vậy, hãy dùng tài khoản quản trị phù hợp, giữ thông tin đăng nhập SSH an toàn và không chia sẻ mật khẩu máy chủ trong nội dung công khai.
2. Cài PostgreSQL trên Ubuntu

Ubuntu cung cấp PostgreSQL thông qua trình quản lý gói apt. Cài máy chủ PostgreSQL cùng gói tiện ích thường dùng bằng lệnh:
sudo apt install postgresql postgresql-contrib -ySau khi cài xong, kiểm tra dịch vụ:
sudo systemctl status postgresqlNếu trạng thái hiển thị active (exited) hoặc dịch vụ đang hoạt động, PostgreSQL thường đã được khởi chạy. Nhấn q để thoát màn hình trạng thái. Bạn cũng có thể yêu cầu hệ thống bật PostgreSQL cùng máy chủ sau khi khởi động lại:
sudo systemctl enable postgresqlKiểm tra phiên bản chương trình dòng lệnh:
psql --versionTrên Ubuntu, PostgreSQL thường được cài kèm một tài khoản hệ điều hành tên postgres. Ubuntu cũng cấu hình xác thực nội bộ để tài khoản này có thể truy cập PostgreSQL qua cơ chế peer. Vì vậy, thay vì đăng nhập trực tiếp bằng psql với tài khoản quản trị của VPS, hãy chuyển sang tài khoản hệ điều hành postgres:
sudo -u postgres psqlKhi đăng nhập thành công, dấu nhắc thường chuyển thành postgres=#. Đây là giao diện nhập lệnh SQL, khác với dấu nhắc terminal thông thường. Để thoát khỏi psql, nhập \q rồi nhấn Enter.
Nếu dịch vụ chưa hoạt động, hãy thử khởi động lại và kiểm tra trạng thái lần nữa:
sudo systemctl restart postgresql
sudo systemctl status postgresql3. Tạo người dùng và database PostgreSQL đầu tiên

Khi đã vào giao diện psql bằng tài khoản postgres, bạn có thể tạo tài khoản riêng cho ứng dụng. Hạn chế dùng tài khoản quản trị để kết nối từ ứng dụng vì tài khoản có quyền cao hơn mức cần thiết.
Tại dấu nhắc postgres=#, nhập lệnh sau. Hãy thay app_user bằng tên bạn muốn dùng và thay phần mật khẩu mẫu bằng một mật khẩu mạnh, riêng biệt:
CREATE ROLE app_user WITH LOGIN PASSWORD 'ThayBangMatKhauManh';Không dùng nguyên mật khẩu mẫu trong bài hướng dẫn. Mật khẩu nên dài, khó đoán và không trùng với mật khẩu SSH hay dịch vụ khác. Trong môi trường thật, hãy lưu thông tin đăng nhập trong nơi quản lý bí mật phù hợp, tránh đưa vào kho mã nguồn.
Tiếp theo, tạo database và đặt người dùng vừa tạo làm chủ sở hữu:
CREATE DATABASE app_db OWNER app_user;Tên app_db có thể thay bằng tên database phù hợp với ứng dụng. Quyền sở hữu giúp app_user quản lý dữ liệu trong database đó mà không cần cấp quyền quản trị toàn máy chủ. Để xem danh sách database hiện có, nhập:
\lBạn cũng có thể kết nối trực tiếp tới database mới ngay trong psql:
\c app_dbNếu kết nối thành công, màn hình sẽ thông báo đã chuyển sang database app_db. Gõ \q để quay về terminal trước khi kiểm tra đăng nhập bằng tài khoản ứng dụng.
4. Kiểm tra kết nối và thao tác thử
Từ terminal, kiểm tra kết nối qua TCP trên chính VPS bằng lệnh:
psql -h 127.0.0.1 -U app_user -d app_db -WTrong đó, -h 127.0.0.1 yêu cầu kết nối qua địa chỉ loopback, -U chỉ tên người dùng, -d chỉ database và -W yêu cầu nhập mật khẩu. Khi được hỏi, nhập mật khẩu đã tạo; ký tự sẽ không hiển thị trong lúc gõ. Nếu thấy dấu nhắc app_db=>, việc xác thực đã thành công.
Chạy truy vấn để xác nhận tài khoản và database hiện tại:
SELECT current_database(), current_user, version();Để thử tạo bảng và thêm một bản ghi, nhập:
CREATE TABLE ghi_chu (
id SERIAL PRIMARY KEY,
noi_dung TEXT NOT NULL,
tao_luc TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
INSERT INTO ghi_chu (noi_dung) VALUES ('Kiem tra PostgreSQL');
SELECT * FROM ghi_chu;Nếu truy vấn trả về dòng vừa thêm, database đã sẵn sàng cho các thao tác cơ bản. Kết thúc phiên làm việc bằng \q. Khi tích hợp vào ứng dụng, hãy dùng đúng địa chỉ máy chủ, tên database, tên người dùng và mật khẩu; không đưa mật khẩu vào mã nguồn công khai.
5. Kết nối từ máy tính khác và lưu ý bảo mật
Mặc định, PostgreSQL trên VPS thường chỉ nhận kết nối cục bộ. Đây là lựa chọn an toàn cho ứng dụng chạy cùng máy chủ. Không nên mở cổng PostgreSQL ra Internet một cách rộng rãi chỉ để tiện kiểm tra.
Nếu cần truy cập từ máy tính cá nhân, có thể cân nhắc SSH tunnel. Trên máy tính cá nhân, mở một phiên terminal và chạy:
ssh -L 5433:127.0.0.1:5432 user@IP_VPSGiữ phiên SSH này mở. Sau đó, trong terminal khác trên máy tính cá nhân, kết nối tới cổng 5433 ở máy của bạn:
psql -h 127.0.0.1 -p 5433 -U app_user -d app_db -WCách này chuyển tiếp kết nối qua SSH mà không cần công khai cổng PostgreSQL. Nếu hệ thống bắt buộc nhận kết nối trực tiếp từ mạng, chỉ cho phép địa chỉ IP nguồn đáng tin cậy trong cấu hình PostgreSQL và tường lửa, đồng thời dùng xác thực mật khẩu phù hợp. Không đặt listen_addresses thành địa chỉ mở rộng hoặc cho phép mọi địa chỉ truy cập nếu chưa hiểu rõ rủi ro. Sau khi đổi cấu hình, cần tải lại hoặc khởi động lại dịch vụ để áp dụng.
Hãy cập nhật hệ điều hành và PostgreSQL theo quy trình phù hợp, giới hạn quyền của từng tài khoản, sao lưu dữ liệu định kỳ và kiểm tra khả năng khôi phục bản sao lưu. Với database cần sao lưu riêng, công cụ pg_dump có thể xuất dữ liệu, chẳng hạn:
pg_dump -h 127.0.0.1 -U app_user -d app_db -F c -f app_db.backupLệnh sẽ yêu cầu mật khẩu nếu cấu hình xác thực cần thiết. Tệp sao lưu nên được lưu ở vị trí an toàn, có giới hạn quyền truy cập; một bản sao nằm cùng VPS không thay thế hoàn toàn cho phương án lưu trữ dự phòng khác.
6. Khắc phục một số lỗi thường gặp
Không kết nối được tới máy chủ: kiểm tra dịch vụ bằng sudo systemctl status postgresql và xác nhận PostgreSQL đang chạy. Nếu đang kết nối cục bộ, thử lại với -h 127.0.0.1 để dùng TCP thay vì cơ chế xác thực cục bộ.
Sai mật khẩu hoặc lỗi xác thực: kiểm tra lại tên role, tên database và mật khẩu. Nếu tài khoản chưa được tạo, đăng nhập bằng sudo -u postgres psql và xem danh sách role bằng lệnh \du. Có thể đặt lại mật khẩu trong phiên quản trị bằng ALTER ROLE app_user WITH PASSWORD 'MatKhauMoi';, sau đó cập nhật mật khẩu trong ứng dụng.
Không tìm thấy database: trong psql, dùng \l để xem danh sách database và xác nhận chính xác tên trong tham số -d. Tên phân biệt chữ hoa, chữ thường khi được tạo với dấu ngoặc kép; vì vậy nên ưu tiên tên chữ thường đơn giản.
Không thể kết nối từ bên ngoài VPS: kiểm tra bạn có thực sự cần kết nối trực tiếp hay có thể dùng SSH tunnel. Nếu cần mở truy cập mạng, cần rà soát cấu hình PostgreSQL, quy tắc tường lửa và IP nguồn được phép. Chỉ mở cổng khi đã giới hạn nguồn truy cập và hiểu rõ tác động bảo mật.
Kết luận
Quy trình cài PostgreSQL trên Ubuntu VPS gồm cài gói, kiểm tra dịch vụ, tạo role riêng, tạo database và xác nhận kết nối bằng psql. Sau khi hoàn tất, hãy giữ quyền truy cập ở mức cần thiết, bảo vệ mật khẩu và chuẩn bị phương án sao lưu trước khi đưa dữ liệu quan trọng vào sử dụng.
Nếu bạn đang tìm một môi trường VPS để triển khai PostgreSQL và ứng dụng, VibeVPS hiện có VPS AMD EPYC Gen 3 và VPS Platinum Gen 2 với các gói từ 81.000đ/tháng. Bạn có thể tham khảo cấu hình phù hợp với nhu cầu lưu trữ và tải dự kiến trước khi bắt đầu.
- #PostgreSQL
- #Ubuntu VPS
- #cài PostgreSQL Ubuntu
- #PostgreSQL VPS
- #tạo database PostgreSQL
- #Linux
- #cơ sở dữ liệu


