PostgreSQL для обычных человеков

Не читайте, если вы DBA. Разве только с целью позабавиться.

Posted by yara_tchk on April 1, 2017

Если у вас есть машина на Linux (и даже если ее нет), желание ковырять данные или просто освоить SQL и научиться элементарному админству этой поистине волшебной БД, то PostgreSQL – это прекрасно, это для вас. Бесплатно, опенсорсно, просто, эффективно – это далеко не все, что можно сказать об этой СУБД. Как вы понимаете, у всех разные представления о прекрасном и о развлечениях, но я думаю, мои извращенные представления не одиноки (нет).



SQL и вообще ковыряние данныx (датасайенсы там и машин лернинги, да и программирование вообще в целом) – это занятие для тех, кто хорошо осознает свою интроверсию и любит уходить в себя. Да-да, вот этот офигенно сложный запрос в 150 строк и несколько уровней вложенности никто не оценит кроме тебя. Даже твой коллега. Даже после того, как ты расскажешь, как гениально ты решил эту проблему с большой таблицей вот этим маленьким подзапросом. Потому что твой коллега тоже так делал и ты его не понял. По-настоящему радоваться такому может только автор этого детища. Зато сколько веры в себя приносит решенная задача!



Не помню, как так вышло, что меня попросили поставить постгрес на Raspberry Pi, но я тогда знала про Linux примерно ничего (из набора консольных команд – ls и cd. Продвинутые сукаэльные скрипты и процедуры не в счет). Так что если у вас тоже нет никаких представлений – не спешите ставить постгрес на винду. Купите пай, изучайте на здоровье. Надо просто знать две вещи, что сочетание ctrl + C поможет, если нужно отменить процесс, который подозрительно долго выполняется или просит от вас что-то невразумительное, и что не надо делать так: rmrf

Правда не надо




Интернет полон информации. Особенно если объект вашего вопроса очень популярен (а постгрес популярен и на момент написания статьи занимает 4-е место в ежемесячном ранкинге по популярности). Туториалов как грибов после дождя. Стековерфлоу ломится от советов и ответов.

Давайте обзаведемся этой субд и настроим ее.

У меня все началось вот тут – но это было давно и сложно, а сегодня достаточно просто

sudo apt-get install postgresql

– вот и все. Вы готовы к новым возможностям, у вас есть инструмент. Нужно просто его настроить и освоить.


 Обычно после установки субд я сразу устанавливаю пароль юзеру postgres. Не знаю, насколько это правильно, но я так делаю =)

sudo passwd postgres

Следуйте указаниям системы. Вы безвольное говно (на самом деле говно я, и шутить я тоже не умею).

Теперь при смене пользователя на postgres вас попросят ввести пароль (не попросят, если вы под суперюзером, но это не важно). Если вы успели забыть пароль, вернитесь к предыдущему действию (установите парольпункту 2.

su postgres

       Если вы в системе под юзером postgres (в определении этого вам поможет whoami – и это не воами, это хуэмай), вы на правильном пути. Теперь нам нужно поковыряться в конфигах. Это не больно и не страшно. Надо только их найти. Обычно они находятся вот здесь:

/etc/postgresql/x.y/main/

где x.y – версия вашей системы. Если вы ее не знаете, попробуйте сделать

ls /etc/postgresql

если в ответ выпадет циферка – это ваша версия, а если ругань – вам нужно найти директорию конфига. Для этого надо сходить в psql.

psql

Если все резко стало более странным, чем обычно в консоли, и вас просят набрать help для помощи – все ок, вы в консоли базы данных. Наберите (не забудьте точку с запятой):

SHOW config_file;

Вам покажут расположение основного конфига. А потом еще наберите \q для выхода.



        Наконец-то можно поковырять конфиг! Внимание непосвященным - не работают скролл и копипаста (хотя об этом стоило сказать раньше, кек).

nano /etc/postgresql/x.y/main/postgresql.conf

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

listen_addresses = ‘localhost

на

listen_addresses = ‘*’

Для выхода нажмите ctrl + x, на вопрос ответьте y, нажмите Enter.

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

            Давайте создадим базу уже и пользователя! Сделаем это в консоли базы данных конечно же (поменяйте названия с префиксом some и пароль полностью на нужные вам):

psql
create role somerole login superuser password ‘somepassword’;
create database somedb;
\q

            Здорово, теперь в конфиге разрешим этому пользователю коннектится к нашей базе.

nano /etc/postgresql/x.y/main/pg_hba.conf

В самом конце этой простыни добавим строчку

host somedb somerole 0.0.0.0/0 md5

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

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

exit

        Теперь перезапускаем сервис

sudo service postgresql restart

Готово! Вы восхитительны! Открывайте pgAdmin (хороший бесплатный инструмент), подключайтесь к своему хосту, дефолтный порт базы 5432, юзер и база у вас есть =)

Можно ковыряться!

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