Настройка СУБД PostgreSQL
После установки СУБД postgreSQL необходимо создать БД для работы с ПАУ, а так же, настроить доступ к БД и серверу.
Важно: следует понимать, что параметры настройки будут отличаться от тех, которые приняты в разных компаниях и должны быть одобрены системным администратором, отвечающим за обслуживание сети и сервера
Ниже приведены типовые настройки для доступа к СУБД PosgtreSQL
Установка pgAdmin
- Необходимо скачать утилиту для конфигурирования и настройки СУБД PostgreSQL с официального сайта
- Установить утилиту можно как на локальный ПК, так и на сервер под управлением ОС Windows
- Запустить pgAdmin
Если вы используете Internet Explorer и у вас проблемы с пользовательским интерфейсом pgAdmin вам нужно сделать следующее:
- Перейти в трей на панели задач Windows

2. Правой кнопкой мыши нажать на иконку запущенного pgAdmin
3. Выбрать пункт Copy server URL
4. Открыть любой другой браузер (не Internet Explorer)
5. Вставить ссылку в адресную строку
Подключение к СУБД PostgreSQL
- Подключение к серверу

- Задать имя сервера На вкладке General в поле Name указать имя сервера (любое)

3. Задать адрес для подключения
На вкладке Connection указать параметры подключения:

- Если СУБД установлена на удаленном ПК или сервере, то в поле Hostname/address указать адрес или имя ПК/сервера, например: 192.168.0.123 или company-server;
- Если СУБД установлена на локальный ПК, то в поле Hostname/address следует указать имя сервера localhost.
4. Задать порт для подключения
На вкладке Connection указать параметры подключения:
- Если СУБД установлена на удаленном ПК или сервере, то в поле Hostname/address указать адрес или имя ПК/сервера, например: 192.168.0.123 или company-server;
- Если СУБД установлена на локальный ПК, то в поле Hostname/address следует указать имя сервера localhost.

5. Указать пароль для пользователя
На стадии установки СУБД PostgreSQL было предложено ввести пароль суперпользователя и сейчас необходимо указать его в поле Password ;
6. Сохранить настройки с помощью кнопки Save
Создание базы данных
После настройки подключения к СУБД PostgreSQL необходимо создать БД, для этого:
- В окне Browser выбрать сервер, к которому было настроено подключение;
- В меню Object выбрать пункт Create -> Database ;

- В появившемся окне, в поле Database необходимо ввести ama ;

- Сохранить параметры базы данных с помощью кнопки Save
- База данных создана!
Создание пользователя
- Задать имя пользователя


2. Задать пароль пользователя


3. Задать права пользователя. На рисунке ниже изображён минимальный перечень прав для работы с базой данных ПАУ.
Настройка прав для пользователей базы данных по умолчанию
1) В списке баз данных выбрать нужную. Нажать правой кнопкой мыши, по ней, и выбрать пункт меню Properties.

2) Перейти на вкладку Default Priveleges
3) Нажать на «+» и выбрать пользователя, на которого настраиваются права
4) Задать права выбранного пользователя

Настройка прав пользователя через Grant Wizard
При добавлении новых пользователей в базу данных с уже сформированной структурой можно воспользоваться инструментом Grant Wizard, чтобы быстро настроить права нового пользователя для работы с множеством существующих объектов базы данных. Для этого нужно сделать следующее:
1. Выбрать базу данных, и открыть пункт tools в верхнем меню и выбрать инструмент GrantWizard

2. В окне инструмента GrantWizard на первом шаге необходимо выбрать объекты на которые будут выданы права. Проставить галочки нужно на все объекты и нажать Next

3. На втором шаге потребуется выбрать перечень операций над объектами, которые будут доступны пользователю. Для этого кликаем на +, чтобы добавить «привелегию» и задаём пользователя, из списка пользователей и ролей в колонке Grantee. В колонке Privileges выбираем перечень операций. Минимальный перечень для работы с базой ПАУ, указан на рисунке

4. На третьем шаге просто нажимаем кнопку Finish
Как создать сервер в postgresql
CREATE SERVER — создать сторонний сервер
Синтаксис
CREATE SERVERимя_сервера[ TYPE 'тип_сервера' ] [ VERSION 'версия_сервера' ] FOREIGN DATA WRAPPERимя_обёртки_сторонних_данных[ OPTIONS (параметр'значение' [, . ] ) ]
Описание
CREATE SERVER создаёт сторонний сервер. Владельцем сервера становится создавший его пользователь.
Определение стороннего сервера обычно включает информацию о подключении, которую использует обёртка сторонних данных для доступа к внешнему ресурсу. Определяя сопоставления пользователей, можно установить и другие параметры подключения, связанные с пользователями.
Имя сервера должно быть уникальным в базе данных.
Для создания сервера требуется право USAGE для обёртки сторонних данных.
Параметры
имя_сервера
Имя создаваемого стороннего сервера. тип_сервера
Необязательный тип сервера, может быть полезен для обёрток сторонних данных. версия_сервера
Необязательная версия сервера, может быть полезна для обёрток сторонних данных. имя_обёртки_сторонних_данных
Имя обёртки сторонних данных, управляющей сервером. OPTIONS ( параметр ‘ значение ‘ [, . ] )
Это предложение определяет параметры сервера. Эти параметры обычно задают свойства подключения к серверу; их конкретные имена и значения зависят от обёртки сторонних данных.
Замечания
При использовании модуля dblink имя стороннего сервера может служить аргументом функции dblink_connect , определяющим параметры подключения. Для такого варианта использования необходимо иметь право USAGE для стороннего сервера.
Примеры
Создание сервера myserver , доступного через обёртку postgres_fdw :
CREATE SERVER myserver FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host 'foo', dbname 'foodb', port '5432');
За подробностями обратитесь к postgres_fdw.
Совместимость
CREATE SERVER соответствует стандарту ISO/IEC 9075-9 (SQL/MED).
Создание СУБД PostgreSQL
Система управления базами данных (СУБД) предназначена для обслуживания баз данных, обеспечения сохранности и целостности хранимых данных. Подробнее см. в статье Создание базы данных.
Чтобы создать новую СУБД PostgreSQL:
- Перейдите в Настройки → Серверы баз данных → Создать.
- Укажите Имя СУБД.
- В поле Тип выберите «PostgreSQL».
- Укажите Адрес сервера, по которому будет доступна СУБД.
- Укажите Имя пользователя и Пароль для доступа к СУБД. Используйте в пароле строчные и прописные буквы, цифры, специальные символы (такие как @, ?, %). Тогда он будет лучше защищён от взлома.
- Нажмите Ok.
Создание СУБД PostgreSQL
Как создать сервер в postgresql
Чтобы кто-либо смог обратиться к базе данных, необходимо сначала запустить сервер баз данных. Программа сервера называется postgres . Для работы программа postgres должна знать, где найти данные, которые она будет использовать. Указать это местоположение позволяет параметр -D . Таким образом, проще всего запустить сервер, выполнив команду:
$ postgres -D /usr/local/pgsql/data
в результате которой сервер продолжит работу в качестве процесса переднего плана. Запускать эту команду следует под именем учётной записи Postgres Pro . Без параметра -D сервер попытается использовать каталог данных, указанный в переменной окружения PGDATA . Если и эта переменная не определена, сервер не будет запущен.
Однако обычно лучше запускать postgres в фоновом режиме. Для этого можно применить обычный синтаксис, принятый в оболочке Unix:
$ postgres -D /usr/local/pgsql/data >logfile 2>&1 &
Важно где-либо сохранять информацию, которую выводит сервер в каналы stdout и stderr , как показано выше. Это полезно и для целей аудита, и для диагностики проблем. (Более глубоко работа с файлами журналов рассматривается в Разделе 23.3.)
Программа postgres также принимает несколько других параметров командной строки. За дополнительными сведениями обратитесь к справочной странице postgres и к следующей Главе 18.
Такой вариант запуска довольно быстро может оказаться неудобным. Поэтому для упрощения подобных задач предлагается вспомогательная программа pg_ctl . Например:
pg_ctl start -l logfile
запустит сервер в фоновом режиме и направит выводимые сообщения сервера в указанный файл журнала. Параметр -D для неё имеет то же значение, что и для программы postgres . С помощью pg_ctl также можно остановить сервер.
Обычно возникает желание, чтобы сервер баз данных сам запускался при загрузке операционной системы. Скрипты автозапуска для разных систем разные, но в составе Postgres Pro предлагается несколько типовых скриптов в каталоге contrib/start-scripts . Для установки такого скрипта в систему требуются права root.
В различных системах приняты разные соглашения о порядке запуска служб в процессе загрузки. Во многих системах для этого используется файл /etc/rc.local или /etc/rc.d/rc.local . В других применяются каталоги init.d или rc.d . Однако при любом варианте запускаться сервер должен от имени пользователя Postgres Pro , но не root или какого-либо другого пользователя. Поэтому команду запуска обычно следует записывать в форме su postgres -c ‘. ‘ . Например:
su postgres -c 'pg_ctl start -D /usr/local/pgsql/data -l serverlog'
Ниже приведены более конкретные предложения для нескольких основных ОС. (Вместо указанных нами шаблонных значений необходимо подставить правильный путь к каталогу данных и фактическое имя пользователя.)
Для запуска во FreeBSD воспользуйтесь файлом contrib/start-scripts/freebsd в дереве исходного кода Postgres Pro .
В OpenBSD , добавьте в файл /etc/rc.local следующие строки:
if [ -x /usr/local/pgsql/bin/pg_ctl -a -x /usr/local/pgsql/bin/postgres ]; then su -l postgres -c '/usr/local/pgsql/bin/pg_ctl start -s -l /var/postgresql/log -D /usr/local/pgsql/data' echo -n ' postgresql' fi
В системах Linux вы можете либо добавить
/usr/local/pgsql/bin/pg_ctl start -l logfile -D /usr/local/pgsql/data
в /etc/rc.d/rc.local или в /etc/rc.local , либо воспользоваться файлом contrib/start-scripts/linux в дереве исходного кода Postgres Pro .
В NetBSD можно использовать скрипт запуска для FreeBSD или для Linux , в зависимости от предпочтений.
В Solaris , создайте файл с именем /etc/init.d/postgresql , содержащий следующую стоку:
su - postgres -c "/usr/local/pgsql/bin/pg_ctl start -l logfile -D /usr/local/pgsql/data"
Когда сервер работает, идентификатор его процесса ( PID ) сохраняется в файле postmaster.pid в каталоге данных. Это позволяет исключить запуск нескольких экземпляров сервера с одним каталогом данных, а также может быть полезно для выключения сервера.
17.3.1. Сбои при запуске сервера
Есть несколько распространённых причин, по которым сервер может не запуститься. Чтобы понять, чем вызван сбой, просмотрите файл журнала сервера или запустите сервер вручную (не перенаправляя его потоки стандартного вывода и ошибок) и проанализируйте выводимые сообщения. Ниже мы рассмотрим некоторые из наиболее частых сообщений об ошибках более подробно.
LOG: could not bind IPv4 socket: Address already in use HINT: Is another postmaster already running on port 5432? If not, wait a few seconds and retry. FATAL: could not create TCP/IP listen socket
Это обычно означает именно то, что написано: вы пытаетесь запустить сервер на том же порту, на котором уже работает другой. Однако, если сообщение ядра не Адрес уже используется или подобное, возможна и другая проблема. Например, при попытке запустить сервер с номером зарезервированного порта будут выданы такие сообщения:
$ postgres -p 666 LOG: could not bind IPv4 socket: Permission denied HINT: Is another postmaster already running on port 666? If not, wait a few seconds and retry. FATAL: could not create TCP/IP listen socket
FATAL: could not create shared memory segment: Invalid argument DETAIL: Failed system call was shmget(key=5440001, size=4011376640, 03600).
может означать, что установленный для вашего ядра предельный размер разделяемой памяти слишком мал для рабочей области, которую пытается создать Postgres Pro (в данном примере 4011376640 байт). Возможно также, что в вашем ядре вообще отсутствует поддержка разделяемой памяти в стиле System-V. В качестве временного решения можно попытаться запустить сервер с меньшим числом буферов (shared_buffers), но в итоге вам, скорее всего, придётся переконфигурировать ядро и увеличить допустимый размер разделяемой памяти. Вы также можете увидеть это сообщение при попытке запустить несколько серверов на одном компьютере, если запрошенный ими объём разделяемой памяти в сумме превышает этот предел.
FATAL: could not create semaphores: No space left on device DETAIL: Failed system call was semget(5440126, 17, 03600).
не означает, что у вас закончилось место на диске. Это значит, что установленное в вашем ядре предельное число семафоров System V меньше, чем количество семафоров, которое пытается создать Postgres Pro . Как и в предыдущем случае можно попытаться обойти эту проблему, запустив сервер с меньшим числом допустимых подключений (max_connections), но в конце концов вам придётся увеличить этот предел в ядре.
Если вы получаете ошибку « illegal system call » (неверный системный вызов), то, вероятнее всего, ваше ядро вовсе не поддерживает разделяемую память или семафоры. В этом случае вам остаётся только переконфигурировать ядро и включить их поддержку.
Настройка средств IPC в стиле System V описывается в Подразделе 17.4.1.
17.3.2. Проблемы с подключениями клиентов
Хотя ошибки подключений, возможные на стороне клиента, довольно разнообразны и зависят от приложений, всё же несколько проблем могут быть связаны непосредственно с тем, как был запущен сервер. Описание ошибок, отличных от описанных ниже, следует искать в документации соответствующего клиентского приложения.
psql: could not connect to server: Connection refused Is the server running on host "server.joe.com" and accepting TCP/IP connections on port 5432?
Это общая проблема « я не могу найти сервер и начать взаимодействие с ним » . Показанное выше сообщение говорит о попытке установить подключение по TCP/IP. Очень часто объясняется это тем, что сервер просто забыли настроить для работы по протоколу TCP/IP.
Кроме того, при попытке установить подключение к локальному серверу через Unix-сокет можно получить такое сообщение:
psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
Путь в последней строке помогает понять, к правильному ли адресу пытается подключиться клиент. Если сервер на самом деле не принимает подключения по этому адресу, обычно выдаётся сообщение ядра Connection refused (В соединении отказано) или No such file or directory (Нет такого файла или каталога), приведённое выше. (Важно понимать, что Connection refused в данном контексте не означает, что сервер получил запрос на подключение и отверг его. В этом случае были бы выданы другие сообщения, например, показанные в Разделе 19.4.) Другие сообщения об ошибках, например Connection timed out (Тайм-аут соединения) могут сигнализировать о более фундаментальных проблемах, например, о нарушениях сетевых соединений.
| Пред. | Наверх | След. |
| 17.2. Создание кластера баз данных | Начало | 17.4. Управление ресурсами ядра |