Skip to content
VDS · ڈیٹا بیس

PostgreSQL: انسٹالیشن اور آپ کا پہلا ڈیٹابیس

VDS پر PostgreSQL انسٹال کرنا، رولز اور پہلا ڈیٹابیس، pg_hba.conf میں تصدیق کیسے کام کرتی ہے، اور کنکشن کی خرابیوں کا حل۔

اپ ڈیٹ 23 اگست، 2026

PostgreSQL Python، Node.js اور Go کی ایپلیکیشنز کے لیے ڈیفالٹ انتخاب ہے۔ یہ MySQL کے مقابلے میں ڈیٹا کو زیادہ سختی سے ہینڈل کرتا ہے اور پیچیدہ کوئریز کو بہتر طریقے سے سنبھالتا ہے۔

انسٹالیشن

apt update && apt install -y postgresql postgresql-contrib   # Debian, Ubuntu
systemctl enable --now postgresql

AlmaLinux اور CentOS Stream پر آپ کو کلسٹر خود بنانا ہوگا:

dnf install -y postgresql-server postgresql-contrib
postgresql-setup --initdb
systemctl enable --now postgresql

ورژن اور اسٹیٹس چیک کریں:

sudo -u postgres psql -c "SELECT version();"

رول اور ڈیٹا بیس

PostgreSQL میں یوزر کو رول کہا جاتا ہے۔ ہر پروجیکٹ کے لیے الگ رول بنائیں:

sudo -u postgres psql
CREATE ROLE shop WITH LOGIN PASSWORD 'long-random-password';
CREATE DATABASE shop OWNER shop ENCODING 'UTF8';
REVOKE ALL ON DATABASE shop FROM PUBLIC;

ایپلیکیشن کے لیے کنکشن اسٹرنگ:

postgresql://shop:password@127.0.0.1:5432/shop

سسٹم یوزر سے چیک کریں:

psql "postgresql://shop:password@127.0.0.1:5432/shop" -c "\dt"

آتھنٹیکیشن

دو فائلیں طے کرتی ہیں کہ کون لاگ ان کر سکتا ہے اور کہاں سے۔

/etc/postgresql/17/main/postgresql.conf:

listen_addresses = 'localhost'
port = 5432

/etc/postgresql/17/main/pg_hba.conf — قواعد اوپر سے نیچے پڑھے جاتے ہیں، اور پہلا مماثل قاعدہ لاگو ہوتا ہے:

local   all   postgres            peer
local   all   all                 scram-sha-256
host    all   all   127.0.0.1/32  scram-sha-256

peer طریقے کا مطلب ہے ”سسٹم یوزر رول سے مماثل ہے“ — اسی لیے sudo -u postgres psql بغیر پاس ورڈ کے کام کرتا ہے، جبکہ کسی دوسرے یوزر سے یہی کمانڈ کام نہیں کرتی۔

ترمیم کے بعد: systemctl reload postgresql۔ کبھی بھی trust طریقہ استعمال نہ کریں — یہ کسی کو بھی بغیر پاس ورڈ کے اندر آنے دیتا ہے۔

باہر سے رسائی کے لیے ریموٹ رسائی پڑھیں: آپ کو ایڈریس کے لحاظ سے پابندی لگائے بغیر پورٹ باہر کے لیے نہیں کھولنی چاہیے۔

عام غلطیاں

علامتوجہ
role "..." does not existآپ ایسے سسٹم یوزر سے کنیکٹ کر رہے ہیں جس کا کوئی رول نہیں
password authentication failedpg_hba.conf میں قاعدہ مختلف طریقہ مانگتا ہے، یا پاس ورڈ سیٹ نہیں ہے
could not connect to server: No such file or directoryسروس چل نہیں رہی، یا یہ مختلف پورٹ استعمال کر رہی ہے
permission denied for schema publicورژن 15+ میں آپ کو public پر حقوق واضح طور پر دینے ہوں گے: GRANT ALL ON SCHEMA public TO shop;
FATAL: sorry, too many clientsmax_connections ختم ہو گئی ہیں — ایپلیکیشن کی طرف پول سیٹ اپ کریں

لاگز: /var/log/postgresql/ یا journalctl -u postgresql۔

اگلے مراحل

ایپلیکیشن کو سپر یوزر رول نہ دیں۔ ایک عام ڈیٹا بیس اونر رول وہ سب کچھ کر سکتا ہے جو اسے درکار ہے، لیکن اگر مائیگریشن غلط ہو جائے تو یہ پڑوسی ڈیٹا بیسز کو ڈراپ نہیں کر سکتا۔