Начальная настройка PostgreSQL

 Пришедшие из PHP в Python или, скорее, из MySQL в PostgreSQL немного удивляются очевдным неочевидностям работы с этой базой данных. Тут, как говорится, у кого что было вначале.

У кого в начале был Mysql - было просто: create database, create table. Можно работать.

В PostgreSQL неофита ждет сюрприз, ибо, как в анекдоте про различие стран или, скорее, менталитетов - в Постгрес запрещено все, кроме того что разрешено.

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

Я не буду сейчас копировать стандартный мануал с командной строкой Linux, который начинается с

sudo -u postgres psql

 а разберу типичный случай со стороны DBA.

Итак, вы можете залогиниться ...э-э... закконектиться с базой от имени суперпользователя - юзера с именем postgres, у вас есть консоль для выполнения SQL команд и вы хотите создать базу для нового проекта.


ДА, проект Django, это имеет значение потому что другие действия ORM Django выполнит само, а так, хорошо бы по красоте еще задействовать что-то со словом schema и тому подобное. Но, повторюсь, мы не будем даже создавать таблицу - все сделает ORM


Итак, открываем консоль и выполняем - можно пошагово, а можно и все сразу:


создадим пользователя проекта:

CREATE USER postgresuser WITH password 'PGUserPass';

создадим базу проекта:

CREATE DATABASE django_pg_db;

дадим все права над базой этому пользоваетелю:
GRANT ALL PRIVILEGES ON DATABASE django_pg_db TO postgresuser;

и вот без вот этой последней строчки у вас ничего не заработает - в иные времена ее поиски могли занять несколько часов, даже сейчас GPT системы не очень-то часто упоминают эту подсказку:

 
ALTER DATABASE django_pg_db OWNER TO postgresuser;

все! далее подключаете Джанго, make migrations, ,migrate - все будет работать. 

Это -  то самое неочевидное действие, о котором я писал вначале. Дело в том что много мануалов бевшовно переходят в роль postgresuser и остальное делают от его имени, потому просто пользователь с ошибкой сталкивается нечасто, но стоит вам вести несколько проектов или баз - это проявится.


Что еще? Еще можно и нужно добавить за репликацию - будет отдельный пост, и, может, за работу Джанго с двумя (и более) базами данных - само собой, РАЗНЫМИ базами данных - например MariaDB и PostreSQL  - одновременно. Про это тоже будет пост.


Комментарии