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 failed | pg_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 clients | max_connections ختم ہو گئی ہیں — ایپلیکیشن کی طرف پول سیٹ اپ کریں |
لاگز: /var/log/postgresql/ یا journalctl -u postgresql۔
اگلے مراحل
- ہر ٹیئر کے لیے میموری ٹیوننگ — VDS-1 پر ڈیفالٹ اقدار واضح طور پر بہت کم ہیں۔
- بیک اپس —
pg_dumpاور ری اسٹور۔ - کسی دوسرے سرور سے ڈیٹا بیس کی منتقلی۔
ایپلیکیشن کو سپر یوزر رول نہ دیں۔ ایک عام ڈیٹا بیس اونر رول وہ سب کچھ کر سکتا ہے جو اسے درکار ہے، لیکن اگر مائیگریشن غلط ہو جائے تو یہ پڑوسی ڈیٹا بیسز کو ڈراپ نہیں کر سکتا۔