Установка и работа с 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
На этом, собственно, установка завершена.
После этого можно запустить сервер базы данных командой:
sudo service postgresql start
В терминале должно появится сообщение об успешном запуске:
Для проверки состояния и для остановки сервера БД используйте соответственно команды:
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;
Нажмите 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 при разработке своих проектов