PostgreSQL: ఇన్స్టాలేషన్ మరియు మీ మొదటి డేటాబేస్
VDSపై PostgreSQLను ఇన్స్టాల్ చేయడం, రోల్స్ మరియు మొదటి డేటాబేస్, pg_hba.confలో ఆథెంటికేషన్ ఎలా పనిచేస్తుంది, కనెక్షన్ ఎర్రర్లను పరిష్కరించడం.
23 ఆగస్టు, 2026న నవీకరించబడింది
Python, Node.js మరియు Go అప్లికేషన్ల కోసం PostgreSQL డిఫాల్ట్ ఎంపిక. ఇది 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 పద్ధతిని ఎప్పుడూ ఉపయోగించవద్దు — అది ఎవరినైనా పాస్వర్డ్ లేకుండా లోపలికి అనుమతిస్తుంది.
బయటి నుండి యాక్సెస్ కోసం, remote access చదవండి: అడ్రస్ ద్వారా పరిమితి పెట్టకుండా పోర్ట్ను బయటికి తెరవకూడదు.
సాధారణ ఎర్రర్లు
| లక్షణం | కారణం |
|---|---|
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మరియు రీస్టోర్. - మరో సర్వర్ నుండి డేటాబేస్ మైగ్రేషన్.
అప్లికేషన్కు సూపర్యూజర్ రోల్ను ఇవ్వవద్దు. సాధారణ డేటాబేస్ ఓనర్ రోల్ తనకు కావాల్సినవన్నీ చేయగలదు, కానీ మైగ్రేషన్ తప్పు జరిగితే పక్కనున్న డేటాబేస్లను డ్రాప్ చేయలేదు.