среда, 16 октября 2013 г.

Как настроить postgresql в Ubuntu 13.04 для разработчика

По большей части это пособие для тех, кто убегает переходит с mysql на postgre.

Начинаем с установки необходимых пакетов:
postgresql-client - клиент
pgadmin3 - GUI админка
postgresql - сам сервер
postgresql-contrib -  дополнительные расширения (hstore, pgcrypt)

Для ruby on rails хорошо бы добавить -dev пакеты, чтобы гемы собирались
postgresql-server-dev-9.1 - поставил на всякий случай, если будут дополнительные сборки из исходников.
libpq-dev - важно, если будет сборка тулзов (типа гемов)

Для php поставить
php5-pgsql - коннектор к базе

Установили.

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

Т.е. чтобы зайти в консольный клиент мы пишем:
sudo -u postgres psql

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

Используем Ctrl-D (или команду \q) для выхода из консоли базы и возвращаемся в консоль линукса. Или можно вводить команды из консоли базы, но без sudo -u postgres

(!) Если вы не хотите добавлять новых юзеров, то можно сделать
ALTER USER postgres WITH PASSWORD '<password>';
и использовать юзера postgres с паролем для работы с базой
 
Итак. Добавляем юзера, под которым будем девелопить проект:
sudo -u postgres createuser megacoder - создаем юзера

sudo -u postgres psql - снова заходим в консоль постгре
\PASSWORD megacoder - устанавливаем наш новый пароль для созданного юзера

Или можно одной командой
sudo -u postgres createuser -P -s -e megacoder - через параметры. Укажем, что он будет с паролем, суперюзером и выведем на экран исполняемую команду.

Теперь должно заработать. Цепляемся к базе с помощью pgadmin3 и создаём базу для проекта. Если есть скрипты, то прописываем эти данные в конфигах и запускаем скрипты на создание баз и миграции. Проблем быть не должно, но если они возникли - надо разбираться в чем именно.

Примечания:
Важно! В рельсах нужно раскомментить строку в config/database.yml
host: localhost

Если у вас есть дамп базы, то чтобы его залить нужно набрать
sudo -u postgres psql %database_name% < %my_dump.sql%

Также можете дополнительно через pgAdmin раздать разрешения на доступ к базам и прочее прочее.



Если вы привыкли к phpmyadmin, то существует аналог - phppgmyadmin

Если sudo не установлен, то можно войти в юзера базы данных через su postgres и также выполнять команды напрямую

Список баз данных:
psql -l

UPDATE 2015-03
Можно просто открыть /etc/postgresql/9.4/main/pg_hba.conf и исправить доступ на trust вместо md5
local   all             all                                     trust
host    all             all             127.0.0.1/32            trust
host    all             all             ::1/128                 trust

Так в Gentoo по умолчанию было выставлено. Удобство в том что можете использовать пользователя postgres с любым паролем для доступа. Локально в разработке получается удобнее.