Postgresql install ubuntu: PostgreSQL: Linux downloads (Ubuntu)

Как установить PostgreSQL и pgAdmin4 в Ubuntu 20.04

В данном руководстве мы ознакомимся с установкой PostgreSQL 12, реляционной объекто-ориентированной системой управления базами данных (СУБД). А также, мы проинсталлируем pgAdmin4, инструментарий для работы с сервером баз данных PostgreSQL. Итак, наш мануал – о том, как установить PostgreSQL и pgAdmin4 в Ubuntu 20.04.

Все работы на нашем сервере мы будем производить под учётной записью, имеющей привилегии sudo. Также, на нашем сервере установлен и настроен брандмауэр UFW.

Установка PostgreSQL

Поскольку PostgreSQL устанавливается из стандартных репозиториев Ubuntu, для запуска установки подключитесь к вашему серверу под учётной записью, входящей в группу sudo, и наберите в командной строке:

$ sudo apt update
$ sudo apt install postgresql

При установке пакета инсталлятор создаст новый PostgreSQL-кластер. Данный кластер представляет из себя коллекцию баз данных, которая управляется одним сервером. Также, установщик создаст рабочие директории для PostgreSQL. Данные, необходимые для работы PostgreSQL, будут находится в каталоге /var/lib/postgresql/12/main, а файлы конфигурации – в каталоге /etc/postgresql/12/main.

После завершения установки вы можете убедиться, что служба PostgreSQL активна. Для чего в командной строке наберите:

$ sudo systemctl is-active postgresql

Также, посмотрите, включена ли служба:

$ sudo systemctl is-enabled postgresql

И наконец, вы можете увидеть статус службы PostgreSQL:

$ sudo systemctl status postgresql

После чего, убедитесь, что PostgreSQL-сервер готов принимать подключения от клиентов:

$ sudo pg_isready

Создание базы данных в PostgreSQL

Чтобы создать новую базу данных, вы должны получить доступ к программной оболочке PostgreSQL. Во-первых, подключитесь к системе с помощью учётной записи postgres:

$ sudo su - postgres

Подключившись, выполните команду psql:

$ psql

Если вы видите приглашение ко вводу команд postgres=#, значит вы находитесь в оболочке СУБД PostgreSQL. И значит, можно приступать к созданию базы данных. Первая команда добавит в PostgreSQL пользователя bob (на своём сервере вы можете использовать свои имена пользователей и баз данных):

# CREATE USER bob WITH PASSWORD 'P@$$w0rd';

Как вы понимаете, P@$$w0rd – это пароль для входа под учётной записью bob. В своём примере вы, конечно, можете использовать другой пароль.

Следующая команда создаст базу данных, которую мы назовём, например, bobdb:

# CREATE DATABASE bobdb;

Теперь, назначьте своему пользователю все права сразу на вашу базу данных. В нашем примере это будет выглядеть так:

# GRANT ALL PRIVILEGES ON DATABASE bobdb to bob;

Чтобы покинуть оболочку, наберите:

# \q

И теперь, можно отключить от системы пользователя postgres:

$ exit

Настройка клиентской аутентификации PostgreSQL

СУБД PostgreSQL использует клиентскую аутентификацию для того, чтобы решать, какая учётная запись к какой базе данных и с какого хоста может подключаться. Это определяется настройками конфигурационного файла клиентской аутентификации. В Ubuntu таким файлом является файл pg_hba.conf. Он располагается в директории /etc/postgresql/12/main/.

Откройте этот файл для редактирования, например, с помощью текстового редактора nano:

$ cd /etc/postgresql/12/main
$ sudo nano pg_hba.conf

PostgreSQL использует много типов методов клиентской аутентификации, таких как peer, ident, password или md5. Тип md5 является наиболее безопасным и рекомендуемым по причине того, что он требует от клиента использовать для аутентификации пароли с двойным md5-хешированием. Поэтому нам остаётся лишь убедиться, что в строках ниже указан именно метод md5:

Если вы произвели в конфигурационном файле какие-либо изменения, не забудьте сохранить их при закрытии файла. В nano для этого необходимо нажать Ctrl X, затем Y и Enter. После чего, перезапустите службу:

$ sudo systemctl restart postgresql

Установка pgAdmin4

Пакет pgAdmin4 не доступен для установки из официальных репозиториев Ubuntu. Поэтому мы будем устанавливать его из репозитория pgAdmin4 APT. Для этого сначала необходимо установить данный репозиторий.

Добавьте публичный ключ для репозитория и создайте его конфигурационный файл. Для чего наберите следующие команды:

$ curl https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo apt-key add
$ sudo sh -c 'echo "deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && apt update'

Затем запустите установку pgAdmin4:

$ sudo apt install pgadmin4

Данной командой вы установили набор необходимых пакетов включая веб-сервер Apache2. После завершения инсталляции запустите скрипт для установки веб-компонентов. Данный скрипт должен был установиться вместе с пакетом pgdmin4. Во время своей работы скрипт попросит вас ввести адрес электронной почты. В нашем примере мы будем использовать [email protected], вместо которого вам необходимо ввести свой. Также, скрипт потребует установить пароль, который необходимо ввести дважды. Учтите, что эти E-mail и пароль вы будете в дальнейшем использовать для подключения к веб-интерфейсу pgAdmin4.

$ sudo /usr/pgadmin4/bin/setup-web.sh

В процессе установки скрипт перезапустит службу Apache2 для того, чтобы вступили в силу произведённые изменения.

После того, как скрипт закончит свою работу, вам нужно будет добавить разрешение для Apache2 на доступ через брандмауэр. Чтобы сделать это, наберите:

$ sudo ufw allow 'Apache'

Запустите брандмауэр:

$ sudo ufw enable

Убедитесь, что служба Apache2 включена в список разрешённых на брандмауэре вашего сервера:

$ sudo ufw status

Настройка доступа через веб-интерфейс

Чтобы получить доступ к веб-интерфейсу pgAdmin4, откройте браузер и введите адрес в строке навигации:

http://Your-Server-IP-address/pgadmin4

где, Your-Server-IP-address – IP-адрес вашего VPS.

После этого вы увидите страницу для подключения к pgAdmin4. Для входа используйте адрес электронной почты и пароль, который вы вводили при работе скрипта setup-web.sh:

В случае успешной авторизации, вы попадёте на панель веб-приложения pgAdmin4. Там, вы можете подключиться к своему серверу PostgreSQL, нажав на ярлык Add New Server:

Далее, заполните данные нового сервера на закладке General и перейдите на закладку Connection:

Теперь, заполните данные, необходимые для подключения к серверу. В строке Host name/address введите localhost, в строке Port можно оставить номер порта по умолчанию – 5432. В строке Maintenance database оставьте значение postgres. А вот, в строках Username и Password вы должны указать имя пользователя и его пароль, которые вы ранее добавили в PostgreSQL. В нашем примере это был пользователь bob с паролем P@$$w0rd. Вам, разумеется, необходимо использовать данные своей учётной записи PostgreSQL. Когда всё будет готово, нажмите Save.

Если введённые учётные данные корректны, вы попадёте в панель управления pgAdmin4. Здесь, вы даже можете найти ту базу данных, которую вы создавали при настройке PostgreSQL. В нашем примере это была база данных bobdb.

Таким образом, мы установили СУБД PostgreSQL, создали там учётную запись, базу данных и добавили созданному пользователю набор полномочий по отношению к созданной базе. После чего, мы подключились к СУБД PostgreSQL при помощи веб-интерфейса pgAdmin4. Основой всего нам послужил виртуальный выделенный сервер (VPS), работающий под управлением операционной системы Ubuntu 20.04.

Установка PostgreSQL 12 на Ubuntu 20.04 LTS

  • 2 июля 2021

Установим PostgreSQL 12 на сервер с операционной системой Ubuntu 20. 04 LTS. БД установим на отдельный диск объёмом 300 ГБ, примонтированный к /opt.

Требования

  • ОС Ubuntu 20.04 LTS.
  • Работаем из-под root.

Подготовка раздела

Итак, цепляем новый диск к виртуальной машине. Чтобы Ubuntu увидела новый диск, перезагружаемся. После перезагрузки у нас появляется в системе новый диск /dev/sdb объёмом 300 Гб.

fdisk -l
Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: Virtual disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 5388D5D6-28F3-4F43-BD86-E13190556B92
Device     Start      End  Sectors Size Type
/dev/sda1   2048     4095     2048   1M BIOS boot
/dev/sda2   4096 41940991 41936896  20G Linux filesystem
Disk /dev/sdb: 300 GiB, 322122547200 bytes, 629145600 sectors
Disk model: Virtual disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Создаём основной раздел на диске:

fdisk /dev/sdb

Пример:

Welcome to fdisk (util-linux 2. 34).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x8c9be56d.
Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-629145599, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-629145599, default 629145599):
Created a new partition 1 of type 'Linux' and of size 300 GiB.
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

Проверяем:

fdisk -l
Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: Virtual disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 5388D5D6-28F3-4F43-BD86-E13190556B92
Device     Start      End  Sectors Size Type
/dev/sda1   2048     4095     2048   1M BIOS boot
/dev/sda2   4096 41940991 41936896  20G Linux filesystem
Disk /dev/sdb: 300 GiB, 322122547200 bytes, 629145600 sectors
Disk model: Virtual disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x8c9be56d
Device     Boot Start       End   Sectors  Size Id Type
/dev/sdb1        2048 629145599 629143552  300G 83 Linux

На диске появился раздел /dev/sdb1.

 В разделе /dev/sdb1 нужно создать файловую систему:

mkfs.ext4 -m 0 /dev/sdb1
mke2fs 1.45.5 (07-Jan-2020)
Creating filesystem with 78642944 4k blocks and 19660800 inodes
Filesystem UUID: 0aa0e6a0-9ff5-4dbe-9a3e-7599b7643b16
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616
Allocating group tables: done
Writing inode tables: done
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done

Примонтируем /dev/sdb1 в /opt. В папке opt будет лежать кластер PostgreSQL. Проверим что /opt существует:

cd /
ll | grep opt/
drwxr-xr-x   3 root root       4096 Jul  2 16:34 opt/

Узнаем UUID раздела /dev/sdb1.

blkid /dev/sdb1
/dev/sdb1: UUID="0aa0e6a0-9ff5-4dbe-9a3e-7599b7643b16" TYPE="ext4" PARTUUID="8c9be56d-01"

Добавим строку в /etc/fstab:

UUID=0aa0e6a0-9ff5-4dbe-9a3e-7599b7643b16 /opt  ext4  defaults  0 0

Монтируем раздел:

sudo mount -a

 Проверяем:

df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            7. 8G     0  7.8G   0% /dev
tmpfs           1.6G  872K  1.6G   1% /run
/dev/sda2        20G  6.8G   12G  37% /
tmpfs           7.9G   20K  7.9G   1% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           7.9G     0  7.9G   0% /sys/fs/cgroup
/dev/sdb1       295G   65M  295G   1% /opt
tmpfs           1.6G     0  1.6G   0% /run/user/1000

Видим что /dev/sdb1 примонтирован в /opt и имеет 295G свободного места. Теперь после перезагрузки раздел будет монтироваться автоматически.

Радел для PostgreSQL подготовлен.

Установка PostgreSQL 12

Обновляем репозиторий.

apt-get update

Устанавливаем пакеты postgresql и postgresql-contrib.

apt-get install postgresql postgresql-contrib

Устанавливается PostgreSQL 12.

Проверяем статус сервера:

service postgresql status

Сервис запущен. Сразу же не отходя от кассы перенесём PostgreSQL на выделенный раздел /opt. Проверим где находится текущая БД PostgreSQL.

sudo -u postgres psql
psql (12.7 (Ubuntu 12.7-0ubuntu0.20.04.1))
Type "help" for help.
postgres=# SHOW data_directory;
       data_directory
-----------------------------
 /var/lib/postgresql/12/main
(1 row)

 

БД находится в папке /var/lib/postgresql/12/main. Для переноса БД нам понадобится rsync:

apt-get install rsync

Останавливаем сервисы

service zabbix-server stop
systemctl stop postgresql

Проверка статуса Postgresql.

systemctl status postgresql

Ищем строку «Stopped PostgreSQL RDBMS.»  Сервисы остановлены. Переносим файлы базы данных.

rsync -av /var/lib/postgresql /opt

После переноса переименуем старую папку, на всякий случай:

mv /var/lib/postgresql/12/main /var/lib/postgresql/12/main.bak

Настроим конфигурацию Postgresql. Правим файл postgresql.conf:

vim /etc/postgresql/12/main/postgresql.conf

 Изменяем значение data_directory:

data_directory = '/opt/postgresql/12/main'

 Запуск сервисов.

systemctl start postgresql

Проверяем где находится текущая БД postgresql.

sudo -u postgres psql
psql (12.7 (Ubuntu 12.7-0ubuntu0.20.04.1))
Type "help" for help.
postgres=# SHOW data_directory;
     data_directory
-------------------------
 /opt/postgresql/12/main
(1 row)

БД находится в папке /opt/postgresql/12/main.

Удалим ненужные файлы:

rm -Rf /var/lib/postgresql/12/main.bak

Мы установили Postgresql 12 на Ubuntu 20.04 LTS. Файлы данных разместили на отдельном диске.

Теги

  • Linux
  • sql

Установка и настройка PostgreSQL | Убунту

PostgreSQL (также известная как Postgres) — это объектно-реляционная система баз данных, обладающая функциями традиционных коммерческих систем баз данных с улучшениями, которые можно найти в системах управления базами данных (СУБД) следующего поколения.

Установка

Чтобы установить PostgreSQL, выполните в командной строке следующую команду:

 sudo apt установить postgresql
 

Служба базы данных автоматически настраивается с допустимыми значениями по умолчанию, но ее можно настроить в соответствии с вашими конкретными потребностями.

Конфигурация

PostgreSQL поддерживает несколько методов аутентификации клиентов. В Ubuntu одноранговый узел является методом аутентификации по умолчанию, используемым для локальных соединений , в то время как scram-sha-256 используется по умолчанию для соединений host (раньше это был md5 до Ubuntu 21.10). Пожалуйста, обратитесь к Руководству администратора PostgreSQL, если вы хотите настроить альтернативы, такие как Kerberos.

В следующем обсуждении предполагается, что вы хотите включить соединения TCP/IP и использовать метод MD5 для проверки подлинности клиента. Файлы конфигурации PostgreSQL хранятся в папке 9.0015 /etc/postgresql/<версия>/основной каталог . Например, если вы устанавливаете PostgreSQL 14, файлы конфигурации хранятся в каталоге /etc/postgresql/14/main .

Совет :
Чтобы настроить аутентификацию IDENT , добавьте записи в файл /etc/postgresql/*/main/pg_ident. conf . В файле есть подробные комментарии, которые помогут вам.

По умолчанию разрешены только подключения из локальной системы, чтобы все остальные компьютеры могли подключаться к вашему серверу PostgreSQL, отредактируйте файл /etc/postgresql/*/main/postgresql.conf . Найдите строку: #listen_addresses = ‘localhost’ и измените ее на * :

 listen_addresses = '*'
 

Примечание :
«*» позволит всем доступным IP-интерфейсам (IPv4 и IPv6) прослушивать только IPv4, установленный «0.0.0.0», а «::» позволяет прослушивать все IPv6-адреса.

Подробную информацию о других параметрах см. в файле конфигурации или в документации PostgreSQL, чтобы узнать, как их можно редактировать.

Теперь, когда мы можем подключиться к нашему серверу PostgreSQL, следующим шагом будет установка пароля для пользователя postgres . Выполните следующую команду в терминале, чтобы подключиться к базе данных шаблонов PostgreSQL по умолчанию:

.

 sudo -u postgres psql шаблон1
 

Приведенная выше команда подключается к базе данных PostgreSQL template1 как пользователь postgres . Как только вы подключитесь к серверу PostgreSQL, вы увидите приглашение SQL. Вы можете запустить следующую команду SQL в psql предложит настроить пароль для пользователя postgres .

 ALTER USER postgres с зашифрованным паролем 'your_password';
 

После настройки пароля отредактируйте файл /etc/postgresql/*/main/pg_hba.conf , чтобы использовать аутентификацию scram-sha-256 с пользователем postgres , разрешенным для базы данных template1, из любой системы в локальная сеть (в примере это 192.168.122.1/24):

 hostssl шаблон1 postgres 192.168.122.1/24 скрам-ша-256
 

Примечание :
Используемый здесь оператор конфигурации «hostssl» будет отклонять TCP-соединения, которые не используют ssl. Postgresql в Ubuntu имеет встроенную и настроенную по умолчанию функцию ssl, поэтому она работает сразу. На вашем сервере postgresql используется сертификат, созданный пакетом «ssl-cert», что отлично, но для производственного использования вам следует подумать об обновлении его с помощью надлежащего сертификата от признанного центра сертификации.

Наконец, вы должны перезапустить службу PostgreSQL, чтобы инициализировать новую конфигурацию. В командной строке терминала введите следующее, чтобы перезапустить PostgreSQL:

 sudo systemctl перезапустить postgresql.service
 

Предупреждение :
Приведенная выше конфигурация никоим образом не завершена. Пожалуйста, обратитесь к Руководству администратора PostgreSQL, чтобы настроить дополнительные параметры.

Вы можете протестировать подключения к серверу с других компьютеров с помощью клиента PostgreSQL следующим образом, заменив доменное имя на ваше фактическое доменное имя сервера или IP-адрес:

 sudo apt установить клиент postgresql
psql --host your-servers-dns-or-ip --username postgres --password --dbname template1
 

Потоковая репликация

PostgreSQL имеет удобную функцию, называемую потоковой репликацией, которая обеспечивает возможность непрерывной отправки и применения записей XLOG журнала упреждающей записи (WAL) к некоторому количеству резервных серверов, чтобы поддерживать их в актуальном состоянии. Здесь представлен очень простой и простой способ репликации сервера PostgreSQL (основного) на резервный сервер.

Сначала создайте пользователя репликации на основном сервере, который будет использоваться с резервного сервера:

 sudo -u postgres createuser --replication -P -e репликатор
 

Настроим основной сервер на включение потоковой репликации. Откройте файл /etc/postgresql/*/main/postgresql.conf и убедитесь, что у вас есть следующие строки:

 listen_addresses = '*'
wal_level = реплика
 

Также отредактируйте файл /etc/postgresql/*/main/pg_hba.conf , чтобы добавить дополнительную строку, разрешающую подключение резервного сервера для репликации (это специальное ключевое слово) с использованием репликатора пользователя:

 репликатор репликации хоста  scram-sha-256
 

Перезапустите службу, чтобы применить изменения:

 sudo systemctl перезапустить postgresql
 

Теперь на резервном сервере остановим службу PostgreSQL:

 sudo systemctl остановить postgresql
 

Отредактируйте /etc/postgresql/*/main/postgresql. conf , чтобы настроить горячее резервирование:

 hot_standby = вкл.
 

Резервное копирование текущего состояния основного сервера (эти команды по-прежнему выполняются в резервной системе):

 sudo su — постгрес
# резервное копирование текущего содержимого резервного сервера (соответственно обновите версию вашего постгреса)
cp -R /var/lib/postgresql/14/main /var/lib/postgresql/14/main_bak
# удалить все файлы в каталоге данных
rm -rf /var/lib/postgresql/14/main/*
pg_basebackup -h  -D /var/lib/postgresql/14/main -U replicator -P -v -R
 

После того, как это было сделано выше, будет выполнено полное однократное копирование содержимого основной базы данных в локальную систему, являющуюся резервной. В команде pg_basebackup флаги представляют собой следующее:

  • -h : Имя хоста или IP-адрес основного сервера
  • .

  • -D : Каталог данных
  • -U : Пользователь, который будет использоваться в операции
  • -P : Включает отчеты о ходе выполнения
  • -v ​​ : включает подробный режим
  • -R : создает файл standby. signal и добавляет настройки подключения к postgresql.auto.conf .

Наконец, давайте запустим службу PostgreSQL на резервном сервере:

 sudo systemctl запустить postgresql
 

Чтобы убедиться, что он работает, перейдите на главный сервер и выполните следующую команду:

 sudo -u postgres psql -c "выбрать * из pg_stat_replication;"
 

Как уже упоминалось, это очень простое введение, в исходной документации гораздо больше подробностей о конфигурации репликации, а также о дополнительных функциях High Availability, Load Balancing и Replication.

Чтобы протестировать репликацию, теперь вы можете создать тестовую базу данных на основном сервере и проверить, реплицируется ли она на резервном сервере:

 sudo -u postgres createdb test # на основном сервере
sudo -u postgres psql -c "\l" # на резервном сервере
 

Вам необходимо иметь возможность видеть базу данных test , созданную на основном сервере, на резервном сервере.

Резервные копии

Базы данных PostgreSQL следует регулярно создавать резервные копии. Информацию о различных подходах см. в Руководстве администратора PostgreSQL.

Ресурсы

  • Как упоминалось выше, Руководство администратора PostgreSQL — отличный ресурс. Руководство также доступно в пакете postgresql-doc . Выполните в терминале следующее, чтобы установить пакет:

     sudo apt установить postgresql-doc
     

Этот пакет содержит дополнительные справочные страницы по postgresql «dblink» и «интерфейс программирования сервера», а также руководство в формате html, которое вы найдете выше. Чтобы просмотреть руководство, введите xdg-open /usr/share/doc/postgresql-doc-*/html/index.html или укажите его в браузере.

  • Для получения общей информации об SQL см. книги O’Reilly «Начало работы с SQL: практический подход для начинающих» Томаса Нильда в качестве отправной точки и SQL в двух словах в качестве краткого справочника.

  • Кроме того, дополнительную информацию см. на странице PostgreSQL Ubuntu Wiki.


Предыдущий
MySQL

Следующий
Мониторинг: регистрация, мониторинг и оповещение (LMA)

Установка PostgreSQL на Ubuntu для конфигураций безопасности

Планируете установить PostgreSQL на сервер Ubuntu и не знаете, с чего начать? Не смотрите дальше, вам повезло. В этом руководстве вы узнаете о различных способах установки сервера PostgreSQL Ubuntu и выполните базовые настройки безопасности, которые помогут вам приступить к работе.

Продолжайте читать, и вы сразу же запустите сервер PostgreSQL!

Предварительные условия

Этот учебник представляет собой практическую демонстрацию. Если вы хотите продолжить, убедитесь, что у вас есть следующее.

  • Сервер Ubuntu. В этом руководстве используется Ubuntu 20.04.
  • Учетная запись пользователя без полномочий root с привилегиями sudo.

Установка PostgreSQL на Ubuntu

Начиная с новой установки сервера Ubuntu, вы можете установить PostgreSQL двумя способами. Какой способ вы выберете, зависит от того, предпочитаете ли вы удобство (меньше шагов) или наличие последней версии.

Метод 1: установка PostgreSQL на Ubuntu (из репозитория Ubuntu)

По умолчанию репозитории Ubuntu содержат пакеты Postgres, что означает, что вы можете установить пакеты PostgreSQL Ubuntu с помощью Advanced Package Tool (APT) .

Пакеты Postgres в репозиториях Ubuntu не всегда могут быть самыми последними версиями. Если вы предпочитаете установить последнюю версию, перейдите к способу 2.

1. Сначала откройте окно терминала на своем компьютере и подключитесь к серверу Ubuntu по SSH.

2. Затем выполните приведенную ниже команду, чтобы обновить список пакетов на вашем сервере Ubuntu.

 sudo apt update -y 

3. Установите пакеты PostgreSQL, выполнив приведенную ниже команду. Эта команда также установит postgresql-contrib (дополнительные функции Postgres) и postgresql-client (Postgres CLI).

 sudo apt install -y postgresql postgresql-contrib postgresql-client 

4. После установки проверьте состояние установки Postgres, выполнив приведенную ниже команду.

 sudo dpkg --status postgresql 

Как вы можете видеть ниже, последней версией, установленной из репозитория Ubuntu на момент написания этой статьи, является версия 12.

Проверка установки PostgreSQL

Способ 2: Установка PostgreSQL в Ubuntu (из официального репозитория)

Установка PostgreSQL из официального репозитория гарантирует, что вы получаете последнюю версию. Но этот метод установки требует больше шагов по сравнению с установкой с помощью APT.

1. Сначала откройте окно терминала на своем компьютере и подключитесь к серверу Ubuntu по SSH.

2. Выполните следующую команду, чтобы создать файл с именем /etc/apt/sources.list.d/pgdg.list . Этот файл содержит адрес официального репозитория PostgreSQL для вашей версии сервера Ubuntu.

 sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list ' 

3. Затем выполните приведенную ниже команду, чтобы добавить ключ PostgreSQL GPG в менеджер пакетов. APT будет использовать этот ключ для проверки подлинности пакетов в репозитории.

 wget --quiet -O - https://www. postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - 

Вы увидите ответ OK, если добавление ключа прошло успешно.

Добавление ключа GPG официального репозитория

4. Теперь обновите списки пакетов, чтобы apt знал, где найти официальные пакеты PostgreSQL.

 sudo apt update -y 

Как вы можете видеть ниже, команда теперь включает адрес официального репозитория PostgreSQL при проверке пакетов.

Обновление списка пакетов

5. Установите PostgreSQL в Ubuntu, выполнив следующую команду. Дождитесь завершения установки.

 sudo apt install -y postgresql postgresql-contrib postgresql-client 

6. Подтвердите версию PostgreSQL, которую вы установили из официального репозитория, выполнив приведенную ниже команду.

 sudo dpkg --status postgresql 

Как вы можете видеть ниже, версия из официального репозитория — это версия 14 на момент написания этой статьи.

Проверка установки PostgreSQL из официального репозитория

Запуск и проверка службы PostgreSQL

После завершения установки выполните приведенную ниже команду systemctl , чтобы запустить службу PostgreSQL.

 sudo systemctl запустить postgresql.service
 

Наконец, проверьте состояние PostgreSQL, выполнив приведенную ниже команду.

 статус sudo systemctl postgresql.service
 

Статус службы должен быть активен , как показано на рисунке ниже.

Проверка состояния службы Postgres

Защита пользователя PostgreSQL по умолчанию и включение шифрования паролей

При установке PostgreSQL создается учетная запись пользователя по умолчанию с именем postgres , которая имеет полный административный доступ к PostgreSQL. Но у этой специальной учетной записи нет пароля. Любой пользователь, который может войти на сервер Ubuntu, может получить доступ к PostgreSQL как пользователь postgres без ввода пароля.

Учитывая, что учетная запись postgres не защищена, первое действие, которое вы должны предпринять, — установить новый пароль. Для этого выполните следующие действия.

1. Войдите в оболочку PostgreSQL ( psql ), выполнив приведенную ниже команду.

 sudo -u postgres psql 

Как вы можете видеть ниже, любой пользователь, который может войти на сервер Ubuntu, также может получить доступ к базе данных PostgreSQL без ввода пароля.

Доступ к командной строке PostgreSQL

2. Выполните следующую команду в командной строке, чтобы инициировать смену пароля. Укажите надежный пароль по вашему выбору и нажмите Enter.

 \password 

Установка пароля учетной записи postgres

3. После установки нового пароля введите \q и нажмите Enter, чтобы выйти из оболочки psql .

4. По умолчанию PostgreSQL отправляет пароли в виде обычного текста, что может представлять угрозу безопасности. Чтобы исправить этот потенциальный вектор атаки, измените метод аутентификации PostgreSQL на безопасный, например md5 .

Откройте файл /etc/postgresql/12/main/pg_hba. conf в nano для редактирования. Этот файл является основным файлом конфигурации для методов аутентификации PostgreSQL.

 sudo nano /etc/postgresql/12/main/pg_hba.conf 

5. Найдите строку, которая выглядит так, как показано ниже.

 # Административный вход в базу данных через сокет домена Unix
local all postgres peer 

Найдя строку, замените слово peer на md5. После редактирования строки ваш файл должен выглядеть так, как показано на рисунке ниже. Наконец, сохраните файл и выйдите из редактора.

Изменение метода аутентификации

Метод аутентификации md5 использует алгоритм дайджеста сообщения для шифрования пароля перед его отправкой на сервер.

6. Перезапустите сервер PostgreSQL, чтобы изменения вступили в силу.

 sudo systemctl перезапустить postgresql 

7. Повторно подключиться к серверу PostgreSQL как пользователь postgres .

 sudo -u postgres psql 

Введите пароль в командной строке и нажмите Enter.

Доступ к оболочке PostgreSQL с аутентификацией по паролю

Создание и удаление базы данных PostgreSQL

Теперь, когда вы установили и настроили свой сервер PostgreSQL, вы можете приступить к созданию базы данных. В конце концов, что такое РСУБД без базы данных? Выполните следующие шаги, чтобы протестировать сервер, создав и удалив базу данных.

1. Войдите в оболочку PostgreSQL ( psql ), если вы еще этого не сделали.

2. Выполните следующую команду, чтобы создать новую базу данных с именем ata_db .

Обратитесь к документации PostgreSQL , чтобы узнать больше о базе данных и различных типах данных.

 СОЗДАТЬ БАЗУ ДАННЫХ ata_db; 

3. Затем подтвердите успешное создание базы данных, перечислив все доступные базы данных на сервере.

Как вы можете видеть ниже, новая база данных с именем ata_db, которую вы создали на предыдущем шаге, теперь существует на сервере.

Список всех баз данных на вашем сервере PostgreSQL

4. Выполните следующую команду, чтобы подключиться к базе данных ata_db .

 \c ata_db; 

Изображение ниже подтверждает успешное подключение к новой базе данных. Вы можете увидеть сообщение о состоянии, в котором говорится, к какой базе данных вы подключились и с какой учетной записью пользователя.

Подключение к базе данных

Теперь вы можете создавать таблицы и выполнять создание , чтение , обновление и удаление (CRUD) в базе данных.

5. Если в конечном итоге база данных вам больше не нужна и ее необходимо удалить, выполните следующие команды в psql , чтобы удалить базу данных.

Первая строка отключается от базы данных ata_db, переключая действующее соединение на базу данных postgres по умолчанию.