ΠΠ°ΠΊ Π΄Π° ΡΠ΅ ΡΠ²ΡΡΠΆΠ΅ΡΠ΅ Ρ PostgreSQL Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ: ΠΡΠ»Π½ΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π·Π° Π²ΡΠΈΡΠΊΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ
PostgreSQL Π΅ ΠΌΠΎΡΠ½Π°, Π±ΠΎΠ³Π°ΡΠ° Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ, Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅Π»Π°ΡΠΈΠΎΠ½Π½ΠΈ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ (RDBMS), ΠΊΠΎΡΡΠΎ Π΅ ΡΠΏΠ΅ΡΠ΅Π»ΠΈΠ»Π° ΡΠ΅ΠΏΡΡΠ°ΡΠΈΡ Π·Π° Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎΡΡ, Π³ΡΠ²ΠΊΠ°Π²ΠΎΡΡ ΠΈ Π²ΠΈΡΠΎΠΊΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ. ΠΡ Π»Π΅ΠΊΠΈ ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Π½Π° Π½ΠΈΠ²ΠΎ ΠΏΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΠ΅, PostgreSQL Π΅ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π½ΠΈΡΡ ΠΈΠ·Π±ΠΎΡ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ, ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΈ ΠΏΠΎ Π΄Π°Π½Π½ΠΈ ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΈ Π½Π° Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΠΏΠΎ ΡΠ΅Π»ΠΈΡ ΡΠ²ΡΡ. ΠΠ΅ΠΉΠ½Π°ΡΠ° Π½Π°Π΄Π΅ΠΆΠ½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°, Π½Π°ΠΏΡΠ΅Π΄Π½Π°Π»ΠΎΡΠΎ ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Π½Π° SQL ΠΈ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½Π°ΡΠ° ΡΠ°Π·ΡΠΈΡΡΠ΅ΠΌΠΎΡΡ Ρ ΠΏΡΠ°Π²ΡΡ Π΅Π΄Π½Π° ΠΎΡ Π½Π°ΠΉ-Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΈΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ Π·Π° Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, Π½Π°Π»ΠΈΡΠ½ΠΈ Π΄Π½Π΅Ρ.
ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ Π΄Π°Π»ΠΈ Π½Π°ΡΡΡΠΎΠΉΠ²Π°ΡΠ΅ Π½ΠΎΠ² ΠΏΡΠΎΠ΅ΠΊΡ Π² ΡΡΠ΅Π΄Π° Π½Π° VPS Hosting ΠΈΠ»ΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ²Π°ΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Π½Π° Dedicated Server, ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ΡΠΎ ΠΊΠ°ΠΊ Π΄Π° ΡΠ΅ ΡΠ²ΡΡΠΆΠ΅ΡΠ΅ ΠΊΡΠΌ PostgreSQL Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Π΅ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»Π½ΠΎ ΡΠΌΠ΅Π½ΠΈΠ΅. ΠΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π° Π²ΡΡΠ·ΠΊΠ° ΠΎΡΠΈΠ³ΡΡΡΠ²Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ΅Π½ Π΄ΠΎΡΡΡΠΏ, ΠΎΠΏΡΠΈΠΌΠ°Π»Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ ΠΈ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ β ΠΈ ΡΠΎΠ²Π° Π΅ ΡΡΡΠ΅ΡΡΠ²Π΅Π½ΠΈΡ ΠΏΡΡΠ²ΠΈ Π΅ΡΠ°ΠΏ ΠΏΡΠ΅Π΄ΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ, ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½Π΅ ΠΈΠ»ΠΈ Π΅ΠΊΡΠΏΠΎΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ ΡΠΎΠ»ΠΈ ΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½Π΅ Π½Π° Π²Π°ΡΠ°ΡΠ° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Π’ΠΎΠ²Π° Π²ΡΠ΅ΠΎΠ±Ρ Π²Π°ΡΠ½ΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΎΠ±Ρ Π²Π°ΡΠ° Π²ΡΠ΅ΠΊΠΈ ΠΎΡΠ½ΠΎΠ²Π΅Π½ ΠΌΠ΅ΡΠΎΠ΄ Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ΠΊΡΠΌ PostgreSQL: ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄ (CLI), Π³ΡΠ°ΡΠΈΡΠ½ΠΈ GUI ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ½ΠΈ Π²ΡΡΠ·ΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Python ΠΈ Node.js.
1. ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡ Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ΠΊΡΠΌ PostgreSQL
ΠΡΠ΅Π΄ΠΈ Π΄Π° ΡΠ΅ ΠΎΠΏΠΈΡΠ°ΡΠ΅ Π΄Π° ΡΠ΅ ΡΠ²ΡΡΠΆΠ΅ΡΠ΅, ΠΏΠΎΡΠ²ΡΡΠ΄Π΅ΡΠ΅, ΡΠ΅ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡ ΡΠ° Π½Π°Π»ΠΈΡΠ΅:
PostgreSQL Π΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ ΠΈ ΡΠ°Π±ΠΎΡΠΈ
Π£Π±Π΅Π΄Π΅ΡΠ΅ ΡΠ΅, ΡΠ΅ PostgreSQL Π΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ Π½Π° Π²Π°ΡΠΈΡ Π»ΠΎΠΊΠ°Π»Π΅Π½ ΠΊΠΎΠΌΠΏΡΡΡΡ ΠΈΠ»ΠΈ ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ ΠΌΡΠ΅ΠΆΠΎΠ² Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½ PostgreSQL ΡΡΡΠ²ΡΡ. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅ Π΄Π°Π»ΠΈ ΡΡΠ»ΡΠ³Π°ΡΠ° ΡΠ°Π±ΠΎΡΠΈ Ρ:
# On Linux (systemd-based)
sudo systemctl status postgresql
# On macOS (Homebrew)
brew services list | grep postgresql
# On Windows
sc query postgresqlΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ Π΄Π°Π½Π½ΠΈ Π·Π° Π΄ΠΎΡΡΡΠΏ
ΠΠ° Π²ΡΠ΅ΠΊΠΈ ΠΌΠ΅ΡΠΎΠ΄ Π½Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅, ΠΎΠΏΠΈΡΠ°Π½ Π² ΡΠΎΠ²Π° ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ, ΡΠ΅ Π²ΠΈ ΡΡΡΠ±Π²Π°Ρ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ Π΄Π΅ΡΠ°ΠΉΠ»ΠΈ:
| ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ | Π‘ΡΠΎΠΉΠ½ΠΎΡΡ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ |
|---|---|---|
| Host | ΠΠΌΠ΅ Π½Π° Ρ ΠΎΡΡ Π½Π° ΡΡΡΠ²ΡΡΠ° ΠΈΠ»ΠΈ IP Π°Π΄ΡΠ΅Ρ | localhost ΠΈΠ»ΠΈ 127.0.0.1 |
| Port | ΠΠΎΡΡΡΡ, Π½Π° ΠΊΠΎΠΉΡΠΎ PostgreSQL ΡΠ»ΡΡΠ° | 5432 |
| Username | ΠΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈΡ Π°ΠΊΠ°ΡΠ½Ρ Π½Π° PostgreSQL | postgres |
| Password | ΠΠ°ΡΠΎΠ»Π° Π·Π° ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» | *(Π·Π°Π΄Π°Π΄Π΅Π½Π° ΠΏΡΠΈ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡ)* |
| Database Name | Π¦Π΅Π»Π΅Π²Π°ΡΠ° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ | postgres |
ΠΡΠ΅ΠΆΠΎΠ² ΠΈ firewall Π΄ΠΎΡΡΡΠΏ
ΠΠ° ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½ΠΈ ΡΠ²ΡΡΠ·Π²Π°Π½ΠΈΡ, ΡΠ±Π΅Π΄Π΅ΡΠ΅ ΡΠ΅, ΡΠ΅:
- ΠΠΎΡΡΡΡ
5432Π΅ ΠΎΡΠ²ΠΎΡΠ΅Π½ Π² ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° Π½Π° firewall Π½Π° Π²Π°ΡΠΈΡ ΡΡΡΠ²ΡΡ. - ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡΡ ΡΠ°ΠΉΠ» Π½Π° PostgreSQL
pg_hba.confΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΡΠ²ΡΡΠ·Π²Π°Π½ΠΈΡ ΠΎΡ Π²Π°ΡΠΈΡ IP Π°Π΄ΡΠ΅Ρ. - Π€Π°ΠΉΠ»ΡΡ
postgresql.confΠΈΠΌΠ°listen_addressesΠ·Π°Π΄Π°Π΄Π΅Π½ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΎ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ'*'Π·Π° Π²ΡΠΈΡΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ, ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ IP).
2. Π‘Π²ΡΡΠ·Π²Π°Π½Π΅ ΠΊΡΠΌ PostgreSQL ΡΡΠ΅Π· ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄ (CLI)
ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡΡ psql ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄ Π΅ Π½Π°ΠΉ-ΠΏΡΠ΅ΠΊΠΈΡΠ΅ ΠΈ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π½ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ Π·Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ PostgreSQL. Π’ΠΎΠΉ Π΅ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ Ρ Π²ΡΡΠΊΠ° ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡ Π½Π° PostgreSQL ΠΈ Π΅ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π½ΠΈΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΈ ΠΈ Π½Π°ΠΏΡΠ΅Π΄Π½Π°Π»ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ.
Π‘ΡΡΠΏΠΊΠ° 1: ΠΡΠ²ΠΎΡΠ΅ΡΠ΅ Π²Π°ΡΠΈΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π» ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄
- Linux / macOS: ΠΡΠ²ΠΎΡΠ΅ΡΠ΅ Π²Π°ΡΠ΅ΡΠΎ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
- Windows: ΠΡΠ²ΠΎΡΠ΅ΡΠ΅ Command Prompt, PowerShell ΠΈΠ»ΠΈ Windows Terminal. Π£Π²Π΅ΡΠ΅ΡΠ΅ ΡΠ΅, ΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° Π½Π° PostgreSQL
binΠ΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΊΡΠΌ Π²Π°ΡΠ°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ½Π°PATH.
Π‘ΡΡΠΏΠΊΠ° 2: ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Π½Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° psql
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π½Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° psql Π΅:
psql -h host -p port -U username -d databaseΠ Π°Π·Π±ΠΈΠ²ΠΊΠ° Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅:
-h hostβ ΠΠΌΠ΅ Π½Π° Ρ ΠΎΡΡ Π½Π° ΡΡΡΠ²ΡΡΠ° ΠΈΠ»ΠΈ IP Π°Π΄ΡΠ΅Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅ΡlocalhostΠ·Π° Π»ΠΎΠΊΠ°Π»Π½ΠΎ ΠΈΠ»ΠΈ ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½ IP ΠΊΠ°ΡΠΎ192.168.1.100).-p portβ ΠΠΎΡΡΡΡ, Π½Π° ΠΊΠΎΠΉΡΠΎ PostgreSQL ΡΠ»ΡΡΠ° (ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅:5432).-U usernameβ ΠΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΎΡΠΎ ΠΈΠΌΠ΅ Π½Π° PostgreSQL Π·Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅.-d databaseβ ΠΠΌΠ΅ Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ, ΠΊΡΠΌ ΠΊΠΎΡΡΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΡΠ΅ ΡΠ²ΡΡΠΆΠ΅ΡΠ΅.
Π‘ΡΡΠΏΠΊΠ° 3: ΠΠ·ΠΏΡΠ»Π½Π΅ΡΠ΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈΠΌΠ΅Ρ Π½Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅
ΠΠ° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ΠΊΡΠΌ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Ρ ΠΈΠΌΠ΅ mydb Π½Π° Π²Π°ΡΠ°ΡΠ° Π»ΠΎΠΊΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π° ΠΊΠ°ΡΠΎ ΡΡΠΏΠ΅ΡΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» postgres:
psql -h localhost -p 5432 -U postgres -d mydbΠ©Π΅ Π±ΡΠ΄Π΅ΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ°Π½Π΅Π½ΠΈ Π΄Π° Π²ΡΠ²Π΅Π΄Π΅ΡΠ΅ ΠΏΠ°ΡΠΎΠ»Π°ΡΠ°. Π‘Π»Π΅Π΄ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΏΡΠΈΠΊΠ°Π·ΠΊΠ°ΡΠ° Π½Π° shell psql:
mydb=#Π‘ΡΡΠΏΠΊΠ° 4: ΠΠ·ΠΏΡΠ»Π½Π΅ΡΠ΅ Π·Π°ΡΠ²ΠΊΠΈ Π² shell Π½Π° psql
Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΡΠ΅ Π²ΡΡΡΠ΅ Π² shell Π½Π° psql, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΡΠ΅ Π²ΡΡΠΊΠ° SQL Π·Π°ΡΠ²ΠΊΠ° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ:
-- Check the PostgreSQL server version
SELECT version();
-- List all databases
l
-- List all tables in the current database
dt
-- Run a query
SELECT * FROM my_table;
-- Describe a table's structure
d my_tableΠ‘ΡΡΠΏΠΊΠ° 5: ΠΠ·Π»Π΅Π·ΡΠ΅ ΠΎΡ shell Π½Π° psql
ΠΠ° Π·Π°ΡΠ²Π°ΡΡΠ½Π΅ Π½Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ΡΠΎ ΠΈ ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅ ΠΎΡ psql:
qΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π½ΠΈΠ· Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ (URI ΡΠΎΡΠΌΠ°Ρ)
PostgreSQL ΡΡΡΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ΡΡΠ΅Π· URI Π½ΠΈΠ·, ΠΊΠΎΠ΅ΡΠΎ Π΅ ΡΠ΄ΠΎΠ±Π½ΠΎ Π·Π° ΡΠΊΡΠΈΠΏΡΠ²Π°Π½Π΅:
psql "postgresql://postgres:your_password@localhost:5432/mydb"ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° Π½Π° ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ PGPASSWORD
ΠΠ° ΠΈΠ·Π±ΡΠ³Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ΄ΠΊΠ°Π½Π²Π°Π½Π΅ Π·Π° ΠΏΠ°ΡΠΎΠ»Π° Π² Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅:
export PGPASSWORD='your_password'
psql -h localhost -p 5432 -U postgres -d mydb> ΠΠ°Π±Π΅Π»Π΅ΠΆΠΊΠ° Π·Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ: ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° PGPASSWORD Π² shell ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π·ΠΊΡΠΈΠ΅ ΡΡΠ΅ΡΠ½ΠΈ Π΄Π°Π½Π½ΠΈ Π² ΡΠΏΠΈΡΡΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅. ΠΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈ ΡΡΠ΅Π΄ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» .pgpass Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ²Π° (ΠΎΠ±Ρ
Π²Π°Π½Π°Ρ Π² ΡΠ°Π·Π΄Π΅Π»Π° ΠΠ°ΠΉ-Π΄ΠΎΠ±ΡΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ Π·Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ).
3. Π‘Π²ΡΡΠ·Π²Π°Π½Π΅ Ρ PostgreSQL Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π³ΡΠ°ΡΠΈΡΠ½ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ
ΠΠ° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Ρ Π²ΠΈΠ·ΡΠ°Π»Π΅Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΎΡΠ»ΠΈΡΠ΅Π½ GUI ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΡΠ»Π΅ΡΠ½ΡΠ²Π°Ρ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ΡΠΎ, Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° PostgreSQL Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡ Π΄Π° Π·Π°ΠΏΠΎΠΌΠ½ΡΡΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄.
3.1 pgAdmin β ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΈΡΡ PostgreSQL GUI
pgAdmin Π΅ ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΈΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ Π·Π° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΡ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° PostgreSQL. Π’ΠΎΠΉ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ Π²ΡΠ΅ΠΎΠ±Ρ Π²Π°ΡΠ΅Π½ ΡΠ΅Π±-Π±Π°Π·ΠΈΡΠ°Π½ ΠΈ Π½Π°ΡΡΠΎΠ»Π΅Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° SQL Π·Π°ΡΠ²ΠΊΠΈ, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ, ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΈ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Π΄Π°Π½Π½ΠΈ.
ΠΠ°ΠΊ Π΄Π° ΡΠ΅ ΡΠ²ΡΡΠΆΠ΅ΡΠ΅ Ρ pgAdmin
Π‘ΡΡΠΏΠΊΠ° 1: ΠΠ·ΡΠ΅Π³Π»ΡΠ½Π΅ ΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° pgAdmin
ΠΠ·ΡΠ΅Π³Π»Π΅ΡΠ΅ Π½Π°ΠΉ-Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ ΠΎΡ ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΈΡ ΡΠ΅Π±ΡΠ°ΠΉΡ Π½Π° pgAdmin. ΠΠ°ΠΊΠ΅ΡΠΈ Π·Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ ΡΠ° Π½Π°Π»ΠΈΡΠ½ΠΈ Π·Π° Windows, macOS ΠΈ Linux.
Π‘ΡΡΠΏΠΊΠ° 2: Π‘ΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° pgAdmin
ΠΡΠ²ΠΎΡΠ΅ΡΠ΅ pgAdmin. Π’ΠΎΠΉ ΡΠ΅ ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ° Π²ΡΠ² Π²Π°ΡΠΈΡ Π±ΡΠ°ΡΠ·ΡΡ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ (Π·Π° Π½Π°ΡΡΠΎΠ»Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ) ΠΈΠ»ΠΈ ΠΊΠ°ΡΠΎ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
Π‘ΡΡΠΏΠΊΠ° 3: Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π½ΠΎΠ²ΠΎ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ΡΡΡ ΡΡΡΠ²ΡΡ
- Π Π»Π΅Π²ΠΈΡ ΠΏΠ°Π½Π΅Π» ΡΡΠ°ΠΊΠ½Π΅ΡΠ΅ Ρ Π΄ΡΡΠ½ΠΈΡ Π±ΡΡΠΎΠ½ Π²ΡΡΡ Ρ Servers.
- ΠΠ·Π±Π΅ΡΠ΅ΡΠ΅ Create β Serverβ¦
Π‘ΡΡΠΏΠΊΠ° 4: ΠΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π·Π΄Π΅Π»Π° General
- Name: ΠΡΠ²Π΅Π΄Π΅ΡΠ΅ ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Π½ΠΎΡΠΎ ΠΈΠΌΠ΅ Π·Π° ΡΠΎΠ²Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ
Production DBΠΈΠ»ΠΈLocal Development).
Π‘ΡΡΠΏΠΊΠ° 5: ΠΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π·Π΄Π΅Π»Π° Connection
ΠΠΎΠΏΡΠ»Π½Π΅ΡΠ΅ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΏΠΎΠ»Π΅ΡΠ°:
| ΠΠΎΠ»Π΅ | Π‘ΡΠΎΠΉΠ½ΠΎΡΡ |
|---|---|
| Host name/address | localhost (ΠΈΠ»ΠΈ ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½ IP/ΠΈΠΌΠ΅ Π½Π° Ρ
ΠΎΡΡ) |
| Port | 5432 |
| Maintenance database | postgres |
| Username | postgres |
| Password | ΠΠ°ΡΠ°ΡΠ° ΠΏΠ°ΡΠΎΠ»Π° Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» Π½Π° PostgreSQL |
ΠΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΠΎΡΠΌΠ΅ΡΠ½Π΅ΡΠ΅ Save password Π·Π° ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ Π² ΡΡΠ΅Π΄ΠΈ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°.
Π‘ΡΡΠΏΠΊΠ° 6: ΠΠ°ΠΏΠ°Π·Π²Π°Π½Π΅ ΠΈ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅
Π©ΡΠ°ΠΊΠ½Π΅ΡΠ΅ Save. pgAdmin Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ ΡΠ΅ ΡΠ΅ ΠΎΠΏΠΈΡΠ° Π΄Π° ΡΠ΅ ΡΠ²ΡΡΠΆΠ΅. ΠΡΠΈ ΡΡΠΏΠ΅Ρ Π²Π°ΡΠΈΡΡ ΡΡΡΠ²ΡΡ ΡΠ΅ ΡΠ΅ ΠΏΠΎΡΠ²ΠΈ Π² Π»Π΅Π²ΠΈΡ ΠΏΠ°Π½Π΅Π» ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ ΡΠ°Π·ΡΠΈΡΠΈΡΠ΅, Π·Π° Π΄Π° ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°ΡΠ΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, ΡΡ Π΅ΠΌΠΈ, ΡΠ°Π±Π»ΠΈΡΠΈ ΠΈ Π΄ΡΡΠ³ΠΈ.
Π‘ΡΡΠΏΠΊΠ° 7: ΠΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ
Π©ΡΠ°ΠΊΠ½Π΅ΡΠ΅ Ρ Π΄ΡΡΠ½ΠΈΡ Π±ΡΡΠΎΠ½ Π²ΡΡΡ Ρ Π²ΡΡΠΊΠ° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ ΠΈ ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ Query Tool, Π·Π° Π΄Π° ΠΎΡΠ²ΠΎΡΠΈΡΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° Π½Π° SQL. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΈΡΠ΅ΡΠ΅ ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΡΠ΅ Π·Π°ΡΠ²ΠΊΠΈ, Π΄Π° ΠΏΡΠ΅Π³Π»Π΅ΠΆΠ΄Π°ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ ΠΈ Π΄Π° Π΅ΠΊΡΠΏΠΎΡΡΠΈΡΠ°ΡΠ΅ Π΄Π°Π½Π½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°.
3.2 DBeaver β ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π΅Π½ ΠΊΠ»ΠΈΠ΅Π½Ρ Π·Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ
DBeaver Π΅ Π±Π΅Π·ΠΏΠ»Π°ΡΠ΅Π½, Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄, ΠΊΡΡΡΡΠΎΡΠ°Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Π½Π°Π΄ 80 ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ PostgreSQL. Π’ΠΎΠΉ Π΅ ΠΎΡΠΎΠ±Π΅Π½ΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ΅Π½ ΡΡΠ΅Π΄ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ°Π±ΠΎΡΡΡ Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΈΠΏΠΎΠ²Π΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΠΈ ΠΈΠΌΠ°Ρ Π½ΡΠΆΠ΄Π° ΠΎΡ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Π΄Π°Π½Π½ΠΈ, Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ER Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΈ ΠΈ Π΅ΠΊΡΠΏΠΎΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ.
ΠΠ°ΠΊ Π΄Π° ΡΠ΅ ΡΠ²ΡΡΠΆΠ΅ΡΠ΅ Ρ DBeaver
Π‘ΡΡΠΏΠΊΠ° 1: ΠΠ·ΡΠ΅Π³Π»ΡΠ½Π΅ ΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° DBeaver
ΠΠ·ΡΠ΅Π³Π»Π΅ΡΠ΅ DBeaver Community Edition (Π±Π΅Π·ΠΏΠ»Π°ΡΠ½ΠΎ) ΠΎΡ ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΈΡ ΡΠ΅Π±ΡΠ°ΠΉΡ Π½Π° DBeaver. Π’ΠΎΠΉ Π΅ Π½Π°Π»ΠΈΡΠ½ΠΈ Π·Π° Windows, macOS ΠΈ Linux.
Π‘ΡΡΠΏΠΊΠ° 2: Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π½ΠΎΠ²ΠΎ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Ρ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ
- ΠΡΠ²ΠΎΡΠ΅ΡΠ΅ DBeaver.
- Π©ΡΠ°ΠΊΠ½Π΅ΡΠ΅ Π²ΡΡΡ Ρ Π±ΡΡΠΎΠ½Π° New Database Connection (ΠΈΠΊΠΎΠ½Π° Π½Π° ΡΠ΅ΠΏΡΠ΅Π» Π² Π³ΠΎΡΠ½Π°ΡΠ° Π»Π΅Π½ΡΠ° Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ) ΠΈΠ»ΠΈ ΠΎΡΠΈΠ΄Π΅ΡΠ΅ Π½Π° Database β New Database Connection.
Π‘ΡΡΠΏΠΊΠ° 3: ΠΠ·Π±ΠΎΡ Π½Π° PostgreSQL ΠΊΠ°ΡΠΎ ΡΠΈΠΏ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ
ΠΡ ΡΠΏΠΈΡΡΠΊΠ° Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈΡΠ΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ PostgreSQL ΠΈ ΡΡΠ°ΠΊΠ½Π΅ΡΠ΅ Next.
Π‘ΡΡΠΏΠΊΠ° 4: ΠΡΠ²Π΅Π΄Π΅ΡΠ΅ Π΄Π΅ΡΠ°ΠΉΠ»ΠΈΡΠ΅ Π½Π° Π²Π°ΡΠ΅ΡΠΎ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅
ΠΠΎΠΏΡΠ»Π½Π΅ΡΠ΅ ΡΠΎΡΠΌΠ°ΡΠ° Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅:
| ΠΠΎΠ»Π΅ | Π‘ΡΠΎΠΉΠ½ΠΎΡΡ |
|---|---|
| Host | localhost ΠΈΠ»ΠΈ ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½ IP/ΠΈΠΌΠ΅ Π½Π° Ρ
ΠΎΡΡ |
| Port | 5432 |
| Database | mydb (ΠΈΠ»ΠΈ Π²Π°ΡΠ°ΡΠ° ΡΠ΅Π»Π΅Π²Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ) |
| Username | postgres |
| Password | ΠΠ°ΡΠ°ΡΠ° ΠΏΠ°ΡΠΎΠ»Π° Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» Π½Π° PostgreSQL |
Π‘ΡΡΠΏΠΊΠ° 5: Π’Π΅ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ΡΠΎ
Π©ΡΠ°ΠΊΠ½Π΅ΡΠ΅ Test Connection. DBeaver ΡΠ΅ ΡΠ΅ ΠΎΠΏΠΈΡΠ° Π΄Π° ΡΠ΅ ΡΠ²ΡΡΠΆΠ΅ ΠΈ ΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π·Π° ΡΡΠΏΠ΅Ρ ΠΈΠ»ΠΈ Π³ΡΠ΅ΡΠΊΠ°. ΠΠΊΠΎ Π΅ ΠΏΡΡΠ²ΠΈ ΠΏΡΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ PostgreSQL Ρ DBeaver, ΡΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° Π²ΠΈ ΠΏΠΎΠ΄ΠΊΠ°Π½ΠΈ Π΄Π° ΠΈΠ·ΡΠ΅Π³Π»ΠΈΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡ JDBC Π΄ΡΠ°ΠΉΠ²Π΅Ρ β ΡΡΠ°ΠΊΠ½Π΅ΡΠ΅ Download, Π·Π° Π΄Π° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ.
Π‘ΡΡΠΏΠΊΠ° 6: ΠΠ°Π²ΡΡΡΠ²Π°Π½Π΅ ΠΈ Π½Π°ΡΠ°Π»ΠΎ Π½Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π²Π°ΡΠ°ΡΠ° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ
Π©ΡΠ°ΠΊΠ½Π΅ΡΠ΅ Finish. ΠΠ°ΡΠ΅ΡΠΎ PostgreSQL ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ΡΠ΅ ΡΠ΅ ΠΏΠΎΡΠ²ΠΈ Π² ΠΏΠ°Π½Π΅Π»Π° Database Navigator ΠΎΡΠ»ΡΠ²ΠΎ. Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°ΡΠ΅ ΡΠ°Π±Π»ΠΈΡΠΈ, Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΡΠ΅ SQL Π·Π°ΡΠ²ΠΊΠΈ Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° Π½Π° SQL, Π΄Π° ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°ΡΠ΅/Π΅ΠΊΡΠΏΠΎΡΡΠΈΡΠ°ΡΠ΅ Π΄Π°Π½Π½ΠΈ ΠΈ Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°ΡΠ΅ ER Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΈ.
4. Π‘Π²ΡΡΠ·Π²Π°Π½Π΅ ΠΊΡΠΌ PostgreSQL ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ½ΠΎ
Π‘Π²ΡΡΠ·Π²Π°Π½Π΅ΡΠΎ ΠΊΡΠΌ PostgreSQL ΠΎΡ ΠΊΠΎΠ΄ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΅ Π΅Π΄ΠΈΠ½ ΠΎΡ Π½Π°ΠΉ-ΡΠ΅ΡΡΠΎ ΡΡΠ΅ΡΠ°Π½ΠΈΡΠ΅ ΡΠ΅Π°Π»Π½ΠΈ ΡΠ»ΡΡΠ°ΠΈ Π½Π° ΡΠΏΠΎΡΡΠ΅Π±Π°. ΠΠΎ-Π΄ΠΎΠ»Ρ ΡΠ° ΠΏΡΠΈΠΌΠ΅ΡΠΈ, Π³ΠΎΡΠΎΠ²ΠΈ Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ, Π·Π° Π΄Π²Π°ΡΠ° Π½Π°ΠΉ-ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈ Π΅Π·ΠΈΠΊΠ°: Python ΠΈ Node.js.
4.1 Python β ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° psycopg2
psycopg2 Π΅ Π½Π°ΠΉ-ΡΠΈΡΠΎΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡΡ PostgreSQL Π°Π΄Π°ΠΏΡΠ΅Ρ Π·Π° Python. Π’ΠΎΠΉ Π΅ Π±ΡΡΠ·, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ΅Π½ Π·Π° Π½ΠΈΡΠΊΠΈ ΠΈ Π½Π°ΠΏΡΠ»Π½ΠΎ ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π°Ρ Π½Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° Python DB-API 2.0.
ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° psycopg2
pip install psycopg2ΠΠ° ΡΡΠ΅Π΄ΠΈ, ΠΊΡΠ΄Π΅ΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ΡΠΎ ΠΎΡ ΠΈΠ·ΡΠΎΡΠ½ΠΈΠΊ Π½Π΅ Π΅ ΠΆΠ΅Π»Π°ΡΠ΅Π»Π½ΠΎ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ Π΄Π²ΠΎΠΈΡΠ½ΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ:
pip install psycopg2-binaryΠ‘Π²ΡΡΠ·Π²Π°Π½Π΅ ΠΊΡΠΌ PostgreSQL Ρ psycopg2
import psycopg2
from psycopg2 import OperationalError
def create_connection():
connection = None
try:
connection = psycopg2.connect(
user="postgres",
password="your_password",
host="127.0.0.1",
port="5432",
database="mydb"
)
print("Connection to PostgreSQL successful.")
except OperationalError as e:
print(f"The error '{e}' occurred.")
return connection
def execute_query(connection, query):
cursor = connection.cursor()
try:
cursor.execute(query)
connection.commit()
print("Query executed successfully.")
except Exception as e:
print(f"The error '{e}' occurred.")
finally:
cursor.close()
# Establish the connection
conn = create_connection()
# Execute a sample query
if conn:
execute_query(conn, "SELECT version();")
# Fetch and display results
cursor = conn.cursor()
cursor.execute("SELECT version();")
record = cursor.fetchone()
print(f"PostgreSQL server version: {record[0]}")
# Close the connection
cursor.close()
conn.close()
print("PostgreSQL connection closed.")ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° URI Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Ρ psycopg2
import psycopg2
DATABASE_URL = "postgresql://postgres:your_password@127.0.0.1:5432/mydb"
connection = psycopg2.connect(DATABASE_URL)
cursor = connection.cursor()
cursor.execute("SELECT current_database();")
print(cursor.fetchone())
connection.close()4.2 Node.js β ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ° pg
ΠΠ°ΠΊΠ΅ΡΡΡ node-postgres (pg) Π΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡΡ PostgreSQL ΠΊΠ»ΠΈΠ΅Π½Ρ Π·Π° Node.js. Π’ΠΎΠΉ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΊΠ°ΠΊΡΠΎ callback-Π±Π°Π·ΠΈΡΠ°Π½ΠΈ, ΡΠ°ΠΊΠ° ΠΈ async/await ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ Π²ΠΊΠ»ΡΡΠ²Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ΡΡΠ΅Π· ΠΏΡΠ» pg.Pool.
ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ° pg
npm install pgΠ‘Π²ΡΡΠ·Π²Π°Π½Π΅ Ρ Π΅Π΄ΠΈΠ½ ΠΊΠ»ΠΈΠ΅Π½Ρ (async/await)
const { Client } = require('pg');
const client = new Client({
host: 'localhost',
port: 5432,
user: 'postgres',
password: 'your_password',
database: 'mydb',
});
async function connectAndQuery() {
try {
await client.connect();
console.log('Connected to PostgreSQL successfully.');
const result = await client.query('SELECT version()');
console.log('PostgreSQL version:', result.rows[0].version);
const tableResult = await client.query('SELECT * FROM my_table LIMIT 10');
console.log('Query results:', tableResult.rows);
} catch (err) {
console.error('Connection error:', err.message);
} finally {
await client.end();
console.log('PostgreSQL connection closed.');
}
}
connectAndQuery();Π‘Π²ΡΡΠ·Π²Π°Π½Π΅ Ρ ΠΏΡΠ» ΠΎΡ ΡΠ²ΡΡΠ·Π²Π°Π½ΠΈΡ (ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ°Π½ΠΎ Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ)
ΠΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π²ΠΈΠ½Π°Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΠΏΡΠ» ΠΎΡ ΡΠ²ΡΡΠ·Π²Π°Π½ΠΈΡ, Π·Π° Π΄Π° ΡΠΏΡΠ°Π²Π»ΡΠ²Π°ΡΠ΅ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ ΡΠ²ΡΡΠ·Π²Π°Π½ΠΈΡ ΠΊΡΠΌ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ:
const { Pool } = require('pg');
const pool = new Pool({
host: 'localhost',
port: 5432,
user: 'postgres',
password: 'your_password',
database: 'mydb',
max: 20, // Maximum number of connections in the pool
idleTimeoutMillis: 30000,
connectionTimeoutMillis: 2000,
});
async function queryDatabase(sql, params = []) {
const client = await pool.connect();
try {
const result = await client.query(sql, params);
return result.rows;
} catch (err) {
console.error('Query error:', err.message);
throw err;
} finally {
client.release(); // Always release the client back to the pool
}
}
// Example usage
(async () => {
const rows = await queryDatabase('SELECT * FROM my_table WHERE id = $1', [1]);
console.log(rows);
})();ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π½ΠΈΠ· Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Ρ Node.js
const { Client } = require('pg');
const client = new Client({
connectionString: 'postgresql://postgres:your_password@localhost:5432/mydb',
});
client.connect()
.then(() => client.query('SELECT NOW()'))
.then(res => console.log('Current time:', res.rows[0]))
.catch(err => console.error('Error:', err))
.finally(() => client.end());5. Common PostgreSQL Connection Errors and How to Fix Them
Even experienced administrators encounter connection issues. Here are the most common errors and their solutions:
Error: FATAL: role "postgres" does not exist
Cause: The specified PostgreSQL user does not exist on the server.
Fix:
# Create the user via the system's postgres account
sudo -u postgres createuser --superuser postgresError: could not connect to server: Connection refused
Cause: PostgreSQL is not running, or it is not listening on the expected host/port.
Fix:
# Start PostgreSQL
sudo systemctl start postgresql
# Verify it is listening on port 5432
sudo ss -tlnp | grep 5432Also check postgresql.conf to ensure listen_addresses is correctly configured.
Error: FATAL: pg_hba.conf rejects connection
Cause: The pg_hba.conf file does not have an entry permitting your connection.
Fix: Edit /etc/postgresql/<version>/main/pg_hba.conf and add an appropriate rule:
# Allow local connections with password authentication
host all all 127.0.0.1/32 md5
# Allow connections from a specific remote subnet
host all all 192.168.1.0/24 md5After editing, reload PostgreSQL:
sudo systemctl reload postgresqlError: FATAL: password authentication failed
Cause: Incorrect password for the specified user.
Fix: Reset the password from within PostgreSQL:
ALTER USER postgres WITH PASSWORD 'new_secure_password';Error: SSL connection required
Cause: The server requires an SSL/TLS encrypted connection.
Fix: Add sslmode=require to your connection string, or configure SSL properly. If you need a trusted SSL certificate for your server, consider SSL Certificates to secure your database connections end-to-end.
6. Security Best Practices for PostgreSQL Connections
ΠΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° Π²Π°ΡΠΈΡΠ΅ PostgreSQL Π²ΡΡΠ·ΠΊΠΈ Π΅ ΡΠΎΠ»ΠΊΠΎΠ²Π° Π²Π°ΠΆΠ½Π°, ΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ΡΠΎ ΠΈΠΌ. Π‘Π»Π΅Π΄Π²Π°ΠΉΡΠ΅ ΡΠ΅Π·ΠΈ Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ Π²ΡΠ² Π²ΡΡΠΊΠ° ΡΡΠ΅Π΄Π°:
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΡΠΈΠ»Π½ΠΈ, ΡΠ½ΠΈΠΊΠ°Π»Π½ΠΈ ΠΏΠ°ΡΠΎΠ»ΠΈ
ΠΠΈΠ½Π°Π³ΠΈ Π·Π°Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠΈΠ»Π½ΠΈ ΠΏΠ°ΡΠΎΠ»ΠΈ Π·Π° Π²ΡΠΈΡΠΊΠΈ PostgreSQL ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ. ΠΠ·Π±ΡΠ³Π²Π°ΠΉΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΈΡΡ postgres ΡΡΠΏΠ΅ΡΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» Π·Π° Π²ΡΡΠ·ΠΊΠΈ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ β ΡΡΠ·Π΄Π°ΠΉΡΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ.
-- Create a dedicated application user with limited privileges
CREATE USER app_user WITH PASSWORD 'StrongP@ssw0rd!2024';
GRANT CONNECT ON DATABASE mydb TO app_user;
GRANT USAGE ON SCHEMA public TO app_user;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO app_user;ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ .pgpass ΡΠ°ΠΉΠ»Π° Π²ΠΌΠ΅ΡΡΠΎ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° ΡΡΠ΅Π΄Π°
Π‘ΡΡ
ΡΠ°Π½ΡΠ²Π°ΠΉΡΠ΅ ΡΡΠ΅ΡΠ½ΠΈ Π΄Π°Π½Π½ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ Π² .pgpass ΡΠ°ΠΉΠ», Π·Π° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΡΠ΅ ΡΠ°Π·ΠΊΡΠΈΠ²Π°Π½Π΅ Π½Π° ΠΏΠ°ΡΠΎΠ»ΠΈ Π² ΠΈΡΡΠΎΡΠΈΡΡΠ° Π½Π° shell ΠΈΠ»ΠΈ ΡΠΏΠΈΡΡΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅:
# Create the file
echo "localhost:5432:mydb:postgres:your_password" >> ~/.pgpass
# Set correct permissions (required by PostgreSQL)
chmod 600 ~/.pgpassΠΠΈΠ½Π°Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ SSL/TLS Π·Π° ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½ΠΈ Π²ΡΡΠ·ΠΊΠΈ
ΠΠΈΠΊΠΎΠ³Π° Π½Π΅ ΠΏΡΠ΅Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΡΠ΅ΡΠ½ΠΈ Π΄Π°Π½Π½ΠΈ Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ ΠΈΠ»ΠΈ Π΄Π°Π½Π½ΠΈ ΠΎΡ Π·Π°ΡΠ²ΠΊΠΈ ΠΏΠΎ Π½Π΅ΠΊΠΎΠ΄ΠΈΡΠ°Π½ΠΈ Π²ΡΡΠ·ΠΊΠΈ. ΠΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΠΉΡΠ΅ PostgreSQL Π΄Π° ΠΈΠ·ΠΈΡΠΊΠ²Π° SSL:
# In postgresql.conf
ssl = on
ssl_cert_file = 'server.crt'
ssl_key_file = 'server.key'# In pg_hba.conf β require SSL for all remote connections
hostssl all all 0.0.0.0/0 md5ΠΠ³ΡΠ°Π½ΠΈΡΠ΅ΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ° ΡΡΠ΅Π· pg_hba.conf
ΠΡΠΈΠ»ΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° Π½Π° Π½Π°ΠΉ-ΠΌΠ°Π»ΠΊΠΈΡ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ ΠΊΡΠΌ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡ Π΄ΠΎΡΡΡΠΏ. Π Π°Π·ΡΠ΅ΡΠ΅ΡΠ΅ Π²ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΌΠΎ ΠΎΡ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΈ, Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΈ IP Π°Π΄ΡΠ΅ΡΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΌΡΠ΅ΠΆΠΈ.
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ Connection Pooling Π² Production
ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΠΊΠ°ΡΠΎ PgBouncer ΠΈΠ»ΠΈ Π²Π³ΡΠ°Π΄Π΅Π½ΠΈΡ pooling Π² pg.Pool (Node.js) Π½Π°ΠΌΠ°Π»ΡΠ²Π°Ρ ΡΠ΅ΠΆΠΈΠΉΠ½ΠΈΡΠ΅ ΡΠ°Π·Ρ
ΠΎΠ΄ΠΈ ΠΏΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° Π½ΠΎΠ²ΠΈ Π²ΡΡΠ·ΠΊΠΈ ΠΈ Π·Π°ΡΠΈΡΠ°Π²Π°Ρ ΡΡΠ΅ΡΡ Π°ΡΠ°ΠΊΠΈ Π½Π° ΠΈΠ·ΡΠΎΡΠ°Π²Π°Π½Π΅ Π½Π° Π²ΡΡΠ·ΠΊΠΈ.
ΠΠΎΠ΄Π΄ΡΡΠΆΠ°ΠΉΡΠ΅ PostgreSQL Π°ΠΊΡΡΠ°Π»Π΅Π½
ΠΠΈΠ½Π°Π³ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΠΉΡΠ΅ Π½Π°ΠΉ-Π½ΠΎΠ²Π°ΡΠ° ΡΡΠ°Π±ΠΈΠ»Π½Π° Π²Π΅ΡΡΠΈΡ Π½Π° PostgreSQL, Π·Π° Π΄Π° ΡΠ΅ Π²ΡΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΎΡ ΠΏΠ°ΡΠΎΠ²Π΅ Π·Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°.
ΠΠ·Π±ΠΎΡ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π½Π°ΡΠ° Ρ ΠΎΡΡΠΈΠ½Π³ ΡΡΠ΅Π΄Π° Π·Π° PostgreSQL
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΈ Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎΡΡΡΠ° Π½Π° Π²Π°ΡΠ°ΡΠ° PostgreSQL Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Π·Π°Π²ΠΈΡΡΡ Π² Π³ΠΎΠ»ΡΠΌΠ° ΡΡΠ΅ΠΏΠ΅Π½ ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°. ΠΡΠΎ Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΠΈΡΠ΅ ΠΎΠΏΡΠΈΠΈ Π·Π° Ρ ΠΎΡΡΠΈΠ½Π³, ΠΊΠΎΠΈΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΡΠ΅:
- VPS Π₯ΠΎΡΡΠΈΠ½Π³ β ΠΠ΄Π΅Π°Π»Π΅Π½ Π·Π° ΡΡΠ΅Π΄ΠΈ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°, ΠΌΠ°Π»ΠΊΠΈ Π΄ΠΎ ΡΡΠ΅Π΄Π½ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΠΈ Π΅ΠΊΠΈΠΏΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΠΌΠ°Ρ Π½ΡΠΆΠ΄Π° ΠΎΡ ΠΏΡΠ»Π΅Π½ root Π΄ΠΎΡΡΡΠΏ, Π·Π° Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Ρ PostgreSQL ΡΠΎΡΠ½ΠΎ ΠΊΠ°ΠΊΡΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ.
- Dedicated Servers β ΠΠ°ΠΉ-Π΄ΠΎΠ±ΡΠΈΡΡ ΠΈΠ·Π±ΠΎΡ Π·Π° Π²ΠΈΡΠΎΠΊΠΎΡΡΠ°ΡΠΈΡΠ½ΠΈ, ΡΠ΅ΡΡΡΡΠΎΠ΅ΠΌΠΊΠΈ PostgreSQL ΡΠ°Π·Π³ΡΡΡΠ°Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½Π° CPU, RAM ΠΈ I/O ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ Π±Π΅Π· ΡΠΏΠΎΠ΄Π΅Π»ΡΠ½Π΅ Π½Π° ΡΠ΅ΡΡΡΡΠΈ.
- VPS Ρ cPanel β ΠΡΠ»ΠΈΡΠ΅Π½ Π²Π°ΡΠΈΠ°Π½Ρ, Π°ΠΊΠΎ ΠΈΡΠΊΠ°ΡΠ΅ ΠΌΠΎΡΡΠ° Π½Π° VPS, ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π½Π° Ρ Π»Π΅ΡΠ΅Π½ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Π½ ΠΏΠ°Π½Π΅Π» Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π½Π° ΡΡΡΠ²ΡΡΠ° ΡΡΠ΅Π· Π³ΡΠ°ΡΠΈΡΠ΅Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π‘Π²ΡΡΠ·Π²Π°Π½Π΅ΡΠΎ ΠΊΡΠΌ PostgreSQL Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎ ΡΠΌΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅ΡΠΎ Π²ΡΠ΅ΠΊΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ, ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ ΠΏΠΎ Π΄Π°Π½Π½ΠΈ ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ΅Π½ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΠ²Π»Π°Π΄Π΅Π΅. Π’ΠΎΠ²Π° ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π΅ ΠΎΠ±Ρ Π²Π°Π½Π°Π»ΠΎ Π²ΡΠΈΡΠΊΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π½Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ:
- CLI Ρ psql β ΠΡΡΠ·, ΠΌΠΎΡΠ΅Π½ ΠΈ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π½Π°Π²ΡΡΠΊΡΠ΄Π΅, ΠΊΡΠ΄Π΅ΡΠΎ Π΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ PostgreSQL.
- pgAdmin β ΠΡΠΈΡΠΈΠ°Π»Π½ΠΈΡΡ GUI Π·Π° Π²ΠΈΠ·ΡΠ°Π»Π½ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ.
- DBeaver β Π£Π½ΠΈΠ²Π΅ΡΡΠ°Π»Π΅Π½, ΠΊΡΠΎΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½ GUI ΠΊΠ»ΠΈΠ΅Π½Ρ, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ.
- Python (psycopg2) β Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡΡ PostgreSQL Π°Π΄Π°ΠΏΡΠ΅Ρ Π·Π° Python ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
- Node.js (pg) β ΠΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π½ΠΈΡΡ ΠΏΠ°ΠΊΠ΅Ρ Π·Π° PostgreSQL ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Π² JavaScript/Node.js ΡΡΠ΅Π΄ΠΈ.
Π§ΡΠ΅Π· ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ Π½Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ΡΡΡ ΡΠΈΠ»Π½ΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ Π·Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° Π·Π° Ρ ΠΎΡΡΠ²Π°Π½Π΅, ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ ΡΠΎΠ»ΠΈΠ΄Π½Π°, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π° ΠΈ Π²ΠΈΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½Π° PostgreSQL ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, Π³ΠΎΡΠΎΠ²Π° Π·Π° Π²ΡΡΠΊΠΎ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ β ΠΎΡ Π»ΠΈΡΠ½ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ Π΄ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΌΠ°ΡΠ°Π± Π½Π° ΠΏΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΠ΅.
ΠΎΡ Π²ΡΠΈΡΠΊΠΈ Ρ
ΠΎΡΡΠΈΠ½Π³ ΡΡΠ»ΡΠ³ΠΈ