O'rnatish — Windows, Mac, Linux, Docker bilan
Muammodan boshlaylik
PostgreSQL ni o'rnatish ko'rinishda oddiy. Lekin amalda muammolar chiqadi:
- Operatsion tizimga qarab o'rnatish usuli har xil
- To'g'ridan-to'g'ri o'rnatilsa — kompyuteringizdagi boshqa dasturlar bilan to'qnashishi mumkin
- Versiyani o'zgartirish yoki o'chirish qiyin
- Jamoa bilan ishlasangiz — "menda ishlaydi, senda ishlamaydi" muammosi
Shu sababli eng qulay yo'l — Docker orqali o'rnatish.
Docker nima va nima uchun?
Docker — dasturlarni izolyatsiyalangan muhitda ishlatish vositasi. PostgreSQL ni Docker orqali o'rnatganda u kompyuteringizdagi boshqa narsalarga ta'sir qilmaydi.
Hayotiy o'xshatma
Tasavvur qiling: ofisda har bir xodimning alohida stoli bor. Bir xodim stolini tartibsiz qilsa — boshqasiga ta'sir qilmaydi. Docker ham shunday — har bir dastur o'z "stolida" ishlaydi.
Docker o'rnatilmagan bo'lsa — docs.docker.com sahifasidan yuklab oling.
Docker bilan o'rnatish — tavsiya etiladi
Bir qator — va PostgreSQL tayyor:
docker run --name postgres-dev \
-e POSTGRES_PASSWORD=secret \
-e POSTGRES_USER=admin \
-e POSTGRES_DB=mydb \
-p 5432:5432 \
-d postgres:16
Har bir parametr nima qiladi:
--name postgres-dev # ← konteyner nomi — xohlaganingizni yozing
-e POSTGRES_PASSWORD=secret # ← parol
-e POSTGRES_USER=admin # ← foydalanuvchi nomi
-e POSTGRES_DB=mydb # ← birinchi database nomi
-p 5432:5432 # ← 5432 port: kompyuter → konteyner
-d # ← fon rejimida ishlaydi (terminal band bo'lmaydi)
postgres:16 # ← rasmiy PostgreSQL image, 16-versiya
Ishlayotganini tekshirish:
docker ps
# CONTAINER ID IMAGE STATUS PORTS
# a1b2c3d4e5f6 postgres:16 Up 2 minutes 0.0.0.0:5432->5432/tcp
Konteyner to'xtatish va qayta ishga tushirish:
docker stop postgres-dev # to'xtatish
docker start postgres-dev # qayta ishga tushirish
⚠️
docker run— yangi konteyner yaratadi. Har safarrunqilsangiz — yangi bo'sh database. Qayta ishga tushirish uchundocker startishlating.
Linux (Ubuntu) ga to'g'ridan-to'g'ri o'rnatish
sudo apt update
sudo apt install postgresql postgresql-contrib
# Xizmatni ishga tushirish
sudo systemctl start postgresql
sudo systemctl enable postgresql # ← tizim yoqilganda avtomatik ishga tushadi
O'rnatilgandan so'ng postgres nomli tizim foydalanuvchisi yaratiladi. U orqali kiriladi:
sudo -u postgres psql
Mac ga o'rnatish — Homebrew bilan
brew install postgresql@16
# Ishga tushirish
brew services start postgresql@16
Windows ga o'rnatish
postgresql.org/download/windows sahifasidan installer yuklab oling. O'rnatish jarayonida:
- Port — 5432 qoldiring (standart)
- Password — yaxlab eslab qoling, keyinchalik kerak bo'ladi
- Stack Builder — o'rnatish shart emas, o'tkazib yuborsa bo'ladi
Ulanish string formati
Ilovangizdan PostgreSQL ga ulanish uchun connection string ishlatiladi:
postgresql://foydalanuvchi:parol@host:port/database
Docker misolimiz uchun:
postgresql://admin:secret@localhost:5432/mydb
postgresql://admin:secret@localhost:5432/mydb
───── ────── ───────── ──── ────
│ │ │ │ │
username password host port database
Ulanishni tekshirish
Docker konteyneriga bevosita kirib psql ishlatish:
docker exec -it postgres-dev psql -U admin -d mydb
Muvaffaqiyatli kirgandan so'ng:
psql (16.0)
Type "help" for help.
mydb=#
mydb=# — siz hozir mydb database ichida ekanligingizni bildiradi. Oddiy SQL so'rov:
SELECT version();
-- PostgreSQL 16.0 on x86_64-pc-linux-gnu ...
Chiqish uchun:
\q
Tez-tez uchraydigan xatolar
"Port is already allocated" — 5432 port band
Kompyuteringizda PostgreSQL allaqachon o'rnatilgan va ishlayapti. Ikki variant: mavjud PostgreSQL ni to'xtating, yoki Dockerda boshqa port ishlating:
docker run ... -p 5433:5432 ...
# ulanish: postgresql://admin:secret@localhost:5433/mydb
"Password authentication failed"
Parol xato. Docker konteynerini o'chirib, qaytadan yarating — yoki to'g'ri parolni kirgizing. Parolni unutgan bo'lsangiz:
docker rm -f postgres-dev
# keyin qaytadan docker run ...
⚠️ Konteyner o'chirilsa ichidagi ma'lumotlar ham o'chadi. Haqiqiy loyihada ma'lumotlarni saqlash uchun Docker volume ishlatiladi — bu keyinroq ko'riladi.
"Connection refused" — ulanib bo'lmayapti
Konteyner ishlamayapti. Tekshiring:
docker ps # ishlayotgan konteynerlar
docker ps -a # hammasi, shu jumladan to'xtagan
docker start postgres-dev # qayta ishga tushirish
docker run ikkinchi marta xato beradi
docker run har safar yangi konteyner yaratmoqchi bo'ladi. Shu nom bilan konteyner allaqachon bor — xato chiqadi. docker start ishlatiladi:
docker start postgres-dev
Xulosa
Docker — PostgreSQL ni o'rnatishning eng qulay yo'li. Izolyatsiyalangan muhit, versiyani almashtirish oson, jamoada bir xil muhit.
Connection string formati: postgresql://user:password@host:port/database
Asosiy buyruqlar:
docker start postgres-dev— ishga tushirishdocker stop postgres-dev— to'xtatishdocker exec -it postgres-dev psql -U admin -d mydb— psql ga kirish
Keyingi dars
3-dars: psql CLI va pgAdmin — asosiy ishlatish