O'rnatish — Windows, Mac, Linux, Docker bilan

~15 daq · PostgreSQL · Kirish va O'rnatish

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 safar run qilsangiz — yangi bo'sh database. Qayta ishga tushirish uchun docker start ishlating.


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 tushirish
  • docker stop postgres-dev — to'xtatish
  • docker exec -it postgres-dev psql -U admin -d mydb — psql ga kirish

Keyingi dars

3-dars: psql CLI va pgAdmin — asosiy ishlatish