Як встановити PostgreSQL 12 на Ubuntu 24.04|22.04|20.04
Цей посібник проведе вас через кроки, які використовуються для встановлення PostgreSQL 12 у системі Ubuntu Linux. PostgreSQL є однією з найбільш широко поширених об’єктно-реляційних систем управління базами даних, заснованих на POSTGRES 4.2. PostgreSQL 12 було випущено для загального використання, придатно для продакшну та всіх варіантів використання розробки.
Якщо ви хочете побачити всі нові функції та покращення в PostgreSQL 12, відвідайте сторінку приміток до випуску PostgreSQL 12, щоб ознайомитися з основними вдосконаленнями PostgreSQL 12. Не чекаючи, давайте починати встановлення PostgreSQL 12 на систему Ubuntu Linux.
Крок 1: Оновіть систему
Рекомендується оновити ваші поточні системні пакети, якщо це новий екземпляр сервера.
sudo apt update && sudo apt -y install vim bash-completion wget
Після оновлення необхідне перезавантаження.
sudo apt -y upgrade
[ -f /var/run/reboot-required ] && sudo reboot -f
Крок 2: Додайте репозиторій PostgreSQL 12
Нам потрібно імпортувати ключ GPG і додати репозиторій PostgreSQL 12 на нашу машину Ubuntu. Для цього виконайте наступні команди.
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc|sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg
Після імпорту ключа GPG, додайте вміст репозиторію до вашої системи Ubuntu:
echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" |sudo tee /etc/apt/sources.list.d/pgdg.list
Доданий репозиторій містить багато різних пакетів, включаючи сторонні додатки. До них відносяться:
- postgresql-client
- postgresql
- libpq-dev
- postgresql-server-dev
- pgadmin packages
Крок 3: Встановіть PostgreSQL 12 на Ubuntu
Тепер репозиторій успішно додано, оновіть список пакетів і встановіть серверні та клієнтські пакети PostgreSQL 12 на вашу систему Ubuntu Linux.
sudo apt update
sudo apt install postgresql-12 postgresql-client-12
У разі успішної інсталяції буде надруковано повідомлення, схоже на повідомлення, опубліковане на наступному знімку екрана.
Служба PostgreSQL запускається і налаштовується на те, щоб вона з’являлася після кожного перезавантаження системи.
$ systemctl status postgresql.service
● postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
Active: active (exited) since Thu 2023-11-23 13:05:28 UTC; 23s ago
Main PID: 3604 (code=exited, status=0/SUCCESS)
CPU: 2ms
Nov 23 13:05:28 jammy systemd[1]: Starting PostgreSQL RDBMS...
Nov 23 13:05:28 jammy systemd[1]: Finished PostgreSQL RDBMS.
$ systemctl status postgresql@12-main.service
● postgresql@12-main.service - PostgreSQL Cluster 12-main
Loaded: loaded (/lib/systemd/system/postgresql@12-main.service; enabled-runtime; vendor preset: enabled)
Active: active (running) since Thu 2023-11-23 13:05:34 UTC; 36s ago
Process: 4652 ExecStart=/usr/bin/pg_ctlcluster --skip-systemctl-redirect 12-main start (code=exited, status=0/SUCCESS)
Main PID: 4657 (postgres)
Tasks: 7 (limit: 4524)
Memory: 18.1M
CPU: 357ms
CGroup: /system.slice/system-postgresql.slice/postgresql@12-main.service
├─4657 /usr/lib/postgresql/12/bin/postgres -D /var/lib/postgresql/12/main -c config_file=/etc/postgresql/12/main/postgresql.conf
├─4659 "postgres: 12/main: checkpointer " "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "">
├─4660 "postgres: 12/main: background writer " "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" >
├─4661 "postgres: 12/main: walwriter " "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "">
├─4662 "postgres: 12/main: autovacuum launcher " "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ">
├─4663 "postgres: 12/main: stats collector " "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "">
└─4664 "postgres: 12/main: logical replication launcher " "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ">
Nov 23 13:05:32 jammy systemd[1]: Starting PostgreSQL Cluster 12-main...
Nov 23 13:05:34 jammy systemd[1]: Started PostgreSQL Cluster 12-main.
$ systemctl is-enabled postgresql
enabled
Крок 4: Перевірте з’єднання PostgreSQL
Під час інсталяції автоматично створюється користувач postgres. Цей користувач має повний доступ суперадміністратора до всього вашого екземпляра PostgreSQL. Перед тим, як ви перейдете на цей обліковий запис, ваш зареєстрований користувач системи повинен мати привілеї sudo.
sudo su - postgres
Давайте скинемо цей пароль користувача до надійного пароля, який ми можемо запам’ятати.
psql -c "alter user postgres with password 'StrongAdminPassw0rd'"
Запустіть запит PostgreSQL за допомогою команди:
$ psql
Отримайте детальну інформацію про підключення, як показано нижче.
$ psql
psql (12.17 (Ubuntu 12.17-1.pgdg22.04+1))
Type "help" for help.
postgres=# \conninfo
You are connected to database "postgres" as user "postgres" via socket in "/var/run/postgresql" at port "5432".
Давайте створимо тестову базу даних і користувача, щоб подивитися, чи вона працює.
postgres=# CREATE DATABASE mytestdb;
CREATE DATABASE
postgres=# CREATE USER mytestuser WITH ENCRYPTED PASSWORD 'MyStr0ngP@SS';
CREATE ROLE
postgres=# GRANT ALL PRIVILEGES ON DATABASE mytestdb to mytestuser;
GRANT
Список створених баз даних:
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+---------+---------+-------------------------
mytestdb | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =Tc/postgres +
| | | | | postgres=CTc/postgres +
| | | | | mytestuser=CTc/postgres
postgres | postgres | UTF8 | C.UTF-8 | C.UTF-8 |
template0 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 rows)
Підключення до бази даних:
postgres-# \c mytestdb
You are now connected to database "mytestdb" as user "postgres".
Інші встановлені утиліти PostgreSQL, такі як createuser та createdb, можуть бути використані для створення бази даних та користувачів.
postgres@ubuntu:~$ createuser myuser --password
Password:
postgres@ubuntu:~$ createdb mydb -O myuser
postgres@ubuntu:~$ psql -l
Ми можемо створити та підключитися до бази даних на сервері PostgreSQL.
Крок 5: Налаштуйте віддалене підключення (необов’язково)
Встановлення PostgreSQL 12 на Ubuntu приймає підключення лише від localhost. В ідеальних виробничих середовищах у вас буде центральний сервер баз даних і віддалені клієнти, що підключаються до нього, але, звичайно, в межах приватної мережі (LAN).
Щоб увімкнути віддалені підключення, відредагуйте файл конфігурації PostgreSQL:
sudo nano /etc/postgresql/12/main/postgresql.conf
Розкоментуйте рядок 59 і змініть адресу Listen address, щоб приймати з’єднання у ваших мережах.
# Listen on all interfaces
listen_addresses = '*'
# Listen on specified private IP address
listen_addresses = '192.168.10.11'
Після зміни перезапустіть службу postgresql.
sudo systemctl restart postgresql
Підтвердьте адреси для прослуховування.
$ sudo netstat -tunelp | grep 5432
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 111 112837 11143/postgres
tcp6 0 0 :::5432 :::* LISTEN 111 112838 11143/postgres
Насолоджуйтесь використанням PostgreSQL 12 у системі Linux Ubuntu 24.04|22.04|20.04