Установка PostgreSQL сервера в Ubuntu Linux

четверг, 4 сентября 2014 г.
Небольшой мануал по установке и настройке PostgreSQL сервера в Ubuntu (14.04).

1. Установка

Добавляем APT репозиторий:
$ echo 'deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main' \
>> /etc/apt/sources.list.d/pgdg.list
Импортируем ключ:
$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | \
sudo apt-key add -
Устанавливаем:
# sudo apt-get update # apt-get install postgresql-{version}
Вместо {version} указываете ту версию сервера, которая вас интересует: 8.4 или 9.3.

Или выбираете более удобный для себя способ: http://www.postgresql.org/download/linux/ubuntu/.

2. Конфигурирование

После установки рабочая директория поумолчанию /etc/postgresql/{version}/main/ (графический инсталятор производит установку в /opt/, тогда рабочая директория будет /opt/PostgreSQL-{version}/data). В ней находятся основные конфигурационные файлы. 

Разрешаем соединения по TCP/IP

В конфигурационном файле postgresql.conf (поумолчанию находится в /etc/postgresql/{version}/main/) раскоментируем строку #listen_addresses = 'localhost' удалив символ #.
listen_addresses = 'localhost'
Чтобы подключаться к серверу с других машин, значние 'localhost' надо заменить на IP адрес машины, или 0.0.0.0, или просто поставить '*'.
Все необходимые подробности вы можете найти в комментариях в конфигурационном файле.

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

При установке сервера в системе создается пользователь postgres с паролем postgres. С правами этого пользователя сервер общается с операционной системой (на сколько я понимаю). Но для работы вам этого не достаточно. Необходимо задать пароль для одноименного пользователя уже в рамках базы данных. Для этого запускаем консольный клиент psql с права пользователя postgres:
$ sudo -u postgres psql
И выполняем запрос:
ALTER USER postgres with encrypted password '_password_';
Где '_password_' - пароль для подключения к серверу под пользователем postgres.

Если вы не смогли войти под пользователем postgres, потому что psql не соизволил принять пароль, решить проблему можно следующим образом:
  • изменяете метод аутентификации для пользователя postgres на trust (см след. пункт)
  • изменяете пароль как описано выше
  • изменяете матод аутентификации на необходимый
  • не забываете перезапускать сервер после изменения метода аутентификации

Изменение метода аутентификации

В конфигурационном файле pg_hba.conf (поумолчанию находится в /etc/postgresql/{version}/main/) изменяем метод аутентификации для пользователя postgres c ident на md5:
local   all         postgres                          md5
После этого сервер необходимо перезапустить:
$ sudo /etc/init.d/postgresql restart

3. Настраиваем pgAdmin

pgAdmin — наиболее популярная и многофункциональная открытая среда администрирования и разработки для PostgreSQL, самой прогрессивной СУБД с открытым исходным кодом в мире. pgAdmin может работать на платформах Linux, FreeBSD, Solaris, Mac OSX и Windows и управлять PostgreSQL 7.3 и новее, а также коммерческими и производными версиями PostgreSQL, в частности Postgres Plus Advanced Server и Greenplum.
pgAdmin создан для удовлетворения самых разных потребностей пользователей, от написания простых SQL-запросов до создания сложных баз данных. Графический интерфейс pgAdmin поддерживает все возможности PostgreSQL и значительно облегчает администрирование. Приложение включает SQL-редактор с подсветкой синтаксиса, редактор хранимых процедур, агент планирования заданий SQL/командной оболочки, поддержку механизма репликации Slony-I и многое другое. Подключение к серверу можно установить, используя TCP/IP или Unix-сокеты (на платформах *nix ), и применить также SSL-шифрование для безопасности. При этом никакие дополнительные драйверы для соединения с сервером баз данных не требуются.
pgAdmin разрабатывается сообществом экспертов PostgreSQL со всего мира и доступен более чем на десяти языках. Это свободное программное обеспечение выпускается под лицензией PostgreSQL.
Если установка сервера производилась из репозитория, то установить графический клиент можно командой: 
$ sudo apt-get install pgadmin3
  1. Запускаем pgAdmin:
    $ pgadmin3
  2. Создаем новое подключение к серверу: File->Add server
  3. Даем подключению имя, указываем в качестве хоста localhost, в качестве пользователя postgres с паролем, созданным при конфигурировании сервера
  4. Если все хорошо сконфигурировано, проблем возникнуть не должно. 


4. Дополнительные источники информации

Самый исчерпывающий ресурс: Документация. Может быть установлена локально:
sudo apt-get install postgresql-doc-{version}
После установки находится здесь: file:///usr/share/doc/postgresql-doc-{version}/html/index.html

21 комментарий :

  1. Анонимный2 июня 2015 г., 14:38

    wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | \ sudo apt-key add
    Что означает вертикальный слэш и что означает обратный слэш? Команды wget и sudo прописываются в одной строке или в разных? (после обратного слэша надо нажимать клавишу ENTER или не надо?)

    ОтветитьУдалить
    Ответы
    1. Вертикальная черта - это pipe. Обратный слеш - перевод строки в консоли. Т.е. слеш можно не писать, но тогда обе команды надо набирать в одну строку.
      Про пайпы можно почитать например здесь http://www.dokwork.ru/2012/02/unix-way-for-everyday.html =)

      Удалить
    2. Анонимный2 июня 2015 г., 15:17

      Ссылочка, к сожалению, не работает (страница не существует). В википедии прочёл, что вертикальную черту называют пайпом. Но что этот пайп в данном коде делает?

      Удалить
    3. "=)" - это смайлик, а не часть ссылки. В данном конкретном примере вы скачиввваете публичный ключ командой wget, а затем результат перенаправляете команде apt-key для добавления его в список доверенных.

      Удалить
    4. А-а-а, пардон, совсем мозги заклинило =) Теперь установку проделал, вроде, чегой-то установилось, скачалось, а никакого значка этой самой postgresql не появилось. папки и файлы с именами *ostgresql* нашлись только в подпапках папок /usr/share/ и /var/lib/
      Что же делать дальше?

      Удалить
    5. Дальше все зависит от того, что Вы хотите сделать. Например можно запустить pgAdmin, если вы его установили (Alt+F2 -> pgadmin3)

      Удалить
    6. Сейчас установил и запустил. У меня доступен на верху значок в виде электрической вилки и всплывающей подсказкой 'Add a connection to a server' У меня версия Ubuntu 14.04 Скажите, пожалуйста. пароль надо предварительно создать в консоли так, как Вы описали ($ sudo -u postgres psql и далее ALTER USER postgres with encrypted password '_password_'; (включая точку с запятой)?

      Удалить
    7. подразумевалось (на сколько сейчас помню), что в кавычках вместо _password_ надо указать ваш пароль (любой)

      Удалить
    8. Ну, это - понятно =) Пугает описанная Вами возможность возникновения проблемы с паролем. У меня установилась какая-то другая версия postgresql, имена и пути конфигурационных файлов не совпадают с названными Вами файлами. Не ясно, что делать, если psql не примет пароль. И ещё вопрос, - ничего, что pgAdmin уже запущен или надо его закрыть перед заданием пароля в консоли?

      Удалить
    9. Ниже описан способ решения проблем, размещение файлов не так важно. pgAdmin мешать не должен, но на всякий случай можно отключиться от сервера.

      Удалить
    10. Спасибо большое, загляну к Вам ещё!

      Удалить
    11. Всегда рад гостям! Удачи!

      Удалить
  2. Здравствуйте!
    Хотелось бы вернуться к вчерашнему разговору. Вы описали, что делать, если возникнут проблемы с паролем (psql не примет пароль). Однако, файла pg_hba.conf я у себя не нашёл. Я попытался найти нужный файл по строчке 'postgres*ident' командой 'grep -r -l 'postgres*ident' /' , но - тоже ничего не нашёл. Может быть, я не верно задал поиск?
    При этом pgAdmin у меня запускается, очевидно, postgresql установилась нормально. Что же мне делать, если возникнут проблемы с паролем?

    ОтветитьУдалить
    Ответы
    1. То, что запускается pgAdmin говорит что корректно установился pgAdmin :) Можете ли вы в нем к серверу подключиться?

      Удалить
  3. Установил ubuntu server 15.04 Установил pgadmin3 набираю команду pgadmin3, полчаю сообщение 17:35:45: Error: Unable to initialize GTK+, is DISPLAY set properly?
    Как исправить эту ошибку?

    ОтветитьУдалить
  4. Доброго всем дня!
    У меня в конце установки на ubuntu 14.04 ругается на отсутствие

    W: Не удалось получить http://ppa.launchpad.net/trent-/ppa/ubuntu/dists/trusty/main/binary-amd64/Packages 404 Not Found

    W: Не удалось получить http://ppa.launchpad.net/trent-/ppa/ubuntu/dists/trusty/main/binary-i386/Packages 404 Not Found

    E: Некоторые индексные файлы не скачались. Они были проигнорированы или вместо них были использованы старые версии.
    некоторых файлов:

    ОтветитьУдалить
    Ответы
    1. Похоже что у вас проблемы с ppa:trent-/ppa. Просто удалите его из списка источников:
      sudo apt-add-repository --remove ppa:trent-/ppa

      Удалить
  5. Добрый день! застрял тут
    После установки рабочая директория поумолчанию /etc/postgresql/{version}/main/ (графический инсталятор производит установку в /opt/, тогда рабочая директория будет /opt/PostgreSQL-{version}/data). В ней находятся основные конфигурационные файлы.
    не могу найти файлы как и где мне теперь найти postgresql.conf ?

    ОтветитьУдалить
    Ответы
    1. а как именно устанавливали? из репозитория?

      Удалить
  6. Доброго времени суто!!! Вот такая ошибка при установки pgadmin
    Некоторые пакеты невозможно установить . Возможно , Вы просите невозможного ,
    или используете нестабильной дистрибутив , и запрошенные Вами пакеты
    еще не созданы или были удалены из Incoming .
    Следующая информация может поможет Вам исправить ситуацию:
    Пакеты , имеющие недовольны зависимости:
    pgadmin3 : Зависимости ( Depends ) : libwxbase2.8-0 (> = 2.8.12.1 ), но он не может быть установлен
    Зависимости ( Depends ) : libwxgtk2.8-0 (> = 2.8.12.1 ), но он не может быть установлен
    Рекомендует ( Recommends ) : pgagent но он не будет установлен
    E : Невозможно устранить проблемы, вы поломанные зафиксированы пакеты .

    ОтветитьУдалить

Ваше мнение мне искренне интересно. Смелее!

Технологии Blogger.