Установка и работа с PostgreSQL в WSL

Установка и работа с PostgreSQL в WSL

В этой заметке я опишу как установить и начать использовать PostgreSQL в Windows Subsystem for Linux (WSL) для локальной разработки.

Если у вас еще не включен WSL2, то посмотрите как это сделать в этой заметке Установка WSL2 на Windows 10.

Я буду устанавливать Postgres на Ubuntu 20.04.

Итак запускаем Убунту в WSL и приступаем.

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

Установка Postgres проста и состоит из нескольких шагов:

1. Для начала обновим все пакеты Убунту командой:

sudo apt update && sudo apt upgrade

2. Устанавливаем PostgreSQL командой:

sudo apt install postgresql postgresql-contrib

3. Проверяем успешность установки посмотрев версию командой:

psql --version

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

На этом, собственно, установка завершена.

После этого можно запустить сервер базы данных командой:

sudo service postgresql start

В терминале должно появится сообщение об успешном запуске:

Успешный запуск PostgreSQL на WSL2

Для проверки состояния и для остановки сервера БД используйте соответственно команды:

sudo service postgresql status

sudo service postgresql stop

Создание пользователя, БД и подключение к PostgreSQL в WSL2

Проверяем статус sudo service postgresql status и при необходимости запускаем Postgres командой sudo service postgresql start.

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

Для этого воспользуемся консольным клиентом psql, с помощью которого мы можем из консоли взаимодействовать с сервером PostgreSQL. Запускаем его командой:

sudo -u postgres psql

Дальше вводим команды (вводя команды в psql не забудьте точки с запятой в конце каждой команды):

create user ИМЯ password 'ПАРОЛЬ';

Например я создал пользователя django со своим паролем.

Далее создадим базу данных (например blog) и сделаем нового пользователя (в нашем случае django) ее владельцем, для этого выполняем команду:

create database blog owner django;

Создания пользователи и БД PostgreSQL на WSL

Нажмите Ctrl + d чтобы выйти из psql.

Готово, теперь вы можете использовать postgres в ваших проектах.

Подключение к PostgreSQL сторонней программой

Мне удобней работать с БД с помощью графического интерфейса, для этого я использую DBeaver или DataGrip (он есть как отдельной программой, так и в виде строенного модуля в других IDE от JetBrains).

Для подключения сторонней программой нужно учитывать один момент. По умолчанию из соображений безопасности PostgreSQL разрешаются только локальные подключения. Чтобы это исправить и подключиться к БД снаружи нам необходимо отредактировать 2 файла:

1. Файл postgresql.conf – файл основных настроек. В Ubuntu он располагается в /etc/postgresql/ВЕРСИЯ_БД/main/postgresql.conf, в нашем случае версия 12, поэтому откроем его с помощью редактора nano вот так:

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

нам нужно найти строчку

#listen_addresses = ‘localhost’

И заменить ее на

listen_addresses = ‘*’

2. Второй файл это pg_hba.conf – файл с настройками аутентификации. При подключении клиента к серверу из этого файла выбирается первая строчка соответствующая соеденению по четырем параметрам:

  • Типу соединения
  • Имени БД
  • Имени пользователя
  • IP адреу клиента

Откроем файл с помощью nano:

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

Для нашего пользователя и БД допишем в конец файла такую строку:

host      blog       django  all          md5

И сохраним файл.

Строка, которую мы добавили, означает следующее: Сетевые соединения (host) к базе данных (blog) под пользователем Django с любых ip адресов должны проверяться методом md5.

Дальше заходим в утилиту psql:

sudo -u postgres psql

И для обновления конфигурации выполняем следующую команду:

select pg_reload_conf();

Или можно перезагрузить сервер БД командой:

sudo service postgresql restart

Все, теперь пробуем подключится к БД с помощью, например, DBeaver. Введите данные подключения (имя базы, пользователь и пароль), которые мы задали выше:

Подключение к PostgreSQL из DBeaver

Теперь все готово, можно использовать PostgreSQL при разработке своих проектов smiley

Хостинг для ваших проектов