Настройка сервера баз данных PostgreSQL в Debian


Введение


PostgreSQL — это полнофункциональная объектно-реляционная система управления базами данных. PostgreSQL поддерживает большую часть стандартного SQL и спроектирован для использования пользовательских расширений во многих аспектах. Некоторые возможности: ACID-транзакции, внешние ключи, представления, последовательности, подзапросы, триггеры, пользовательские типы и функции, внешние объединения, контроль совместимости использования нескольких версий. Также доступны графические пользовательские интерфейсы (GUI) и привязки ко многим языкам программирования.

Установка сервера баз данных PostgreSQL в Debian


Для установки базовой системы PostgreSQL и текстового клиента командной строки выполните следующую команду из оболочки shell

# apt-get install postgresql postgresql-client

Данная команда установит много пакетных зависимостей. На системе Debian Squezze установится версия PostgreSQL 8.4.8 . Официальная документация доступна здесь.

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

Data directory Все данные базы данных будут храниться по-умолчанию в '/var/lib/postgres/data'.

Data removal policy Также по-умолчанию удаление системы PostgreSQL не повлекёт за собой удаление данных (содержимое базы данных).

Locale Локаль должна быть настроена на приём кодировки, которая будет использоваться в вашей системе баз данных. Выберите локаль, которая подходит именно Вам. Список доступных локалей полностью зависит от операционной системы. Если вам нужно больше локалей, то в первую очередь необходимо установить их в операционную систему.

Date В качестве предпочтительного формата даты выберите European (Европейский) или US (Американский).

Затем последует продолжение установки со значениями по-умолчанию некоторых параметров настройки PostgreSQL. В конце установка создаст файл настроек '/etc/postgresql/postgresql.conf', который в дальнейшем нужно редактировать, изменяя значение параметров настройки PostgreSQL

Создание пользователей для вашей базы данных

По-умолчанию авторизоваться в вашей только что установленней системе базы данных как 'root' можно через пользователя операционной системы 'postgres', выполните

# su
# su postgres
# psql template1
# template1=# \q
# exit

Намного удобнее авторизовываться через вашего пользователя операционной системы или через любого другого пользователя, которого вы выберете. Есть несколько способов предоставления доступа для различных пользователей операционной системы, мы разрешим локальным пользователям операционной системы авторизовываться путём редактирования файла '/etc/postgresql/pg_hba.conf' (полное описание документации на этот файл можно посмотреть здесь). В этом файле вы найдёте несколько строчек наподобие таких

local all postgres ident sameuser
#
# All other connections by UNIX sockets
local all all ident sameuser
#
# All IPv4 connections from localhost
host all all 127.0.0.1 255.255.255.255 md5
# All IPv6 localhost connections
host all all ::1 ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff ident sameuser
host all all ::ffff:127.0.0.1/128 ident sameuser
#
# reject all other connection attempts
host all all 0.0.0.0 0.0.0.0 reject

This file has limited accesses but we will come back here later.Now what we have told PostgreSQL is that all users on the local machine should be able to access all databases, using their UNIX login and passwords. You need to restart your database to take new changes effect

Этот файл устанавливает ограниченный доступ, но мы возвратимся к нему позже. Несколько строк выше сообщают PostgreSQL, что все пользователи на локальной машине, могут получать доступ ко всем базам данных, используя их локальные логин и пароль в операционной системе. Для вступления изменений в силу вам потребуется перезагрузить базу данных

# /etc/init.d/postgresql restart

Now the problem is that you have authorized users to log into the database, but they will only be able to log in if they also exist in the database. So you need to create accounts with their usernames. This is done by issuing the createuser command as user postgres as follows

Теперь проблема заключается в том, что вы дали разрешение пользователям входить в базу данных, но они смогут авторизоваться только, если они также существуют в базе данных. Так что вам теперь нужно создать учётные записи с именами локальных пользователей в операционной системе. Это делается через пользовательскую команду postgres "createuser"

# su postgres
# createuser firstuser
# exit

Команда 'createuser' спросит вас - пользователь может создавать базы данных или создавать новых пользователей. Ответ утвердительный.