Простая настройка VirtualBox, установка и настройка PostgreSQL

Написано, чтобы не забыть

Качаем и ставим программы

Скачиваем и устанавливаем VirtualBox: https://www.virtualbox.org/wiki/Downloads

Скачиваем, например, ubuntu (я ставил 20.04, но по идее можно любую найти, я бы вообще без графического окружения делал, но сейчас это не принципиально): https://ubuntu.ru/get

Создаём в VBox виртуальную машину, монтируем в виртуальный IDE контроллер образ диска убунты, запускаем виртуальную машину, идём по установке (там всё через графическую оболочку, в целом, особенно не важно, как ставить.

В процессе установки попросит создать пользователя и пароль - запомнить что ввели.

Не забудьте потом размонтировать образ диска, чтобы после установки убунта грузилась с виртуального винта, а не снова с установочного диска

pgAdmin качать тут: https://www.pgadmin.org/download/

Настройка сети в VirtualBox

Вся настройка виртуальной машины выходит за рамки этой статьи, но нужно описать настройку сети

В настройках созданной машины открываем раздел "Сеть"

Во вкладке "Адаптер 1" тыкаем галочку "включить сетевой адаптер", если она ещё не поставлена. Там ставим NAT.

Во вкладке "Адаптер 2" тыкаем галочку "включить сетевой адаптер"

В типе подключения выбираем VirtualBox Host-Only Ethernet Adapter. Тыкаем в Дополнительно, там выбираем Тип адаптера Intel PRO/1000 MT Server (какие-то-цифры). (Насчёт этого не уверен, но в интернетах пишут, что с дефолтным не будет работать)

И жмём ОК.

Почему именно такие настройки?

Далеко не копал, но судя по всему, виртуальная машина (или именно сама убунта на виртуалке) не умеет одновременно общаться с одного физического адреса (mac-адреса) и с системой-хостом и с внешней сетью, поэтому нужно два адаптера - один у нас даёт интернет для гостевой системы, а второй - связь с хостовой системой

Установка PostgreSQL

После установки убунты открываем эмулятор терминала (CTRL+ALT+T или на рабочем столе правой кнопкой - открыть терминал)

Установка PostgreSQL:

sudo apt install postgresql postgresql-contrib

Если до этого ещё никогда не работали с unix системами, то надо отметить два момента:

Установка net-tools (не обязательно, но для проверки потом):

sudo apt install net-tools

(пошуршит, спросит - ввести "y", нажать Enter)

Настройка PostgreSQL:

Снова в терминале:

sudo gedit /etc/postgresql/12/main/postgresql.conf

Про sudo не забываем, т.к. это запрос прав суперпользователя на выполнение записи в файл. Без этого файл откроется, но сохранить его будет нельзя.

Помним также о том, что 12 в адресе файла - это версия pgAdmin, она может быть другой, но на момент написания она такая

Попросит пароль (тот, что указывали при установке)

Открывается блокнот (на самом деле gedit), ищем там раздел connection and authentical

Строку

listen address = '127.0.0.1'

заменить на

listen address = '*'

чтобы сервер слушал не только локалхост.

ПРОВЕРИТЬ, ЧТОБЫ СТРОКА НЕ БЫЛА ЗАКОММЕНТИРОВАНА! (т.е. в начале этой строки не должно быть #)

 

Раздел resource usage:

shared_buffers = 128MB

это кэш, меняем на четверть ОЗУ

сохраняем, закрываем.

в окне эмулятора терминала пишем:

ifconfig

нас интересует интерфейс enp0s8:

там скорее всего будет адрес, типа: 192.168.56.101 (после 56 что-то своё может быть). Запоминаем этот адрес - по нему будем подключаться через pgAdmin (если его использовать будете), а конкретно - он вводится в Host name

Значит, 192.168.56.1 - это адрес хоста (т.е. венды, в нашем случае).

Можно это проверить: в венде win+R, пишем cmd, Enter, ipconfig

Адаптер Ethernet VirtualBox Host-Only Network:

        DNS-суффикс подключения . . . . . :
        Локальный IPv6-адрес канала . . . : fe80::a95a:4c7a:da99:6117%6
        IPv4-адрес. . . . . . . . . . . . : 192.168.56.1
        Маска подсети . . . . . . . . . . : 255.255.255.0

Открываем другой конфиг, тоже через терминал:

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

Добавляем в самый низ строку:

host    all             all             192.168.56.1/0         trust

Сохраняем, закрываем.

Рестарт сервера (всё ещё в окне эмулятора терминала):

sudo systemctl restart postgresql

Проверяем:

netstat -nl | grep 5432

Должен вывести что-то такое:

netstat -nl | grep 5432

tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN
tcp6       0      0 :::5432                 :::*                    LISTEN
unix  2      [ ACC ]     STREAM     LISTENING     40661    /var/run/postgresql/.s.PGSQL.5432

если вывел такое:

tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN
unix  2      [ ACC ]     STREAM     LISTENING     38847    /var/run/postgresql/.s.PGSQL.5432  

То значит забыли в конфигах изменить listen address = '127.0.0.1' на '*' или не проверили, что строка закомментирована (напоминаю: в начале строки не должно быть символа #)

 

Создание пароля

sudo -u postgres psql

(от имени пользователя postgres запуск psql с правами суперпользователя)

там вводим:

ALTER USER postgres PASSWORD 'password';

\q

Разумеется, пароль ввести можете какой угодно, на реальном проекте лучше что-то посложнее.

Эту пару пользователь-пароль нужно будет вводить при подключении к этой БД (в pgAdmin, например). В этом примере пользователь - postgres, пароль - password

Другой вариант создания пользователя и пароля:

создание пользователя:

sudo -i -u postgres

psql (\q для выхода)

createuser --interactive

создание пароля:

sudo -u postgres psql postgres

\password postgres

\q

Использованая литература:

Last upd: 06.11.2021 -- KOSumosu

на главную