Создание БД Экстры в PostgreSQL
Начальная БД для ПО «Экстра 8» поставляется в пяти файлах:
- imp.cmd – скрипт создания база данных и разворачивания дампа.
- cre_database.sql – SQL создания БД
- cre_main_roles.sql – создание ролей для пользователей Экстра 8
- cre_user.sql – создание администратора ПО Экстра 8
- extrapg_imp.sql – дамп демо-базы
Создание БД и разворачивание схемы происходит путём запуска файла imp.cmd. Полный листинг imp.cmd
set PGPORT=5432
set pgpassword=postgres_password
set myapp="C:\Program Files\PostgreSQL\17\bin\psql.exe"
rem создаём БД
%myapp% -U postgres -d postgres -q -f cre_database.sql
rem создаём пользователя extra8
%myapp% -U postgres -d toshiba -q -f cre_user.sql
rem создаем роли
%myapp% -U postgres -d toshiba -q -f cre_main_roles.sql
rem дамп базы данных
%myapp% -U postgres -d toshiba -q -f extrapg_imp.sql
Перед тем, как это сделать, нужно произвести несколько действий. В самом файле imp.cmd нужно изменить строку
set PGPORT=5432
если в вашей базе данных используется порт доступа к PostgreSQL отличный от значения по умолчанию (5432)
В следующей строке следует указать пароль пользователя postgres. Из-под пользователя postgres будет создаваться БД для ПО Экстра 8.
set pgpassword=postgres_password
В параметре «myapp» нужно указать ссылку на утилиту psql с полным путем.
Изначально, имя базы данных это toshiba. Если требуется другое имя базы дан-ных, то нужно заменить слова toshiba в файлах imp.cmd, cre_database.sql и cre_user.sql.
Так как роли (пользователи) PostgreSQL не хранятся непосредственно в самой схеме, а являются общими для всех схем, чтобы разделить пользователей несколь-ких БД Экстра, пользователи создаются с префиксом равным имени базы данных и отделенного от имени пользователя символом решётка (#).
Например, если БД называется toshiba, то имя администратора это БД будет toshiba#extra8. Пароль пользователя toshiba#extra8 по умолчанию “none”. Если его нужно изменить при установке, то это можно сделать в файле cre_user.sql.
Содержимое cre_database.sql
CREATE DATABASE toshiba
WITH
OWNER = postgres
ENCODING = 'UTF8'
LC_COLLATE = 'Russian_Russia.1251'
LC_CTYPE = 'Russian_Russia.1251'
TABLESPACE = pg_default
CONNECTION LIMIT = -1
IS_TEMPLATE = False;
Содержимое cre_main_roles.sql
create role extra8user;
create role extra8admin;
create role extra8tech;
create role extra8econ;
create role extra8oboz;
create role extra8diag;
create role extra8ehz;
create role extra8corr;
create role extra8him;
create role extra8hydr;
create role extra8dict;
create role extra8ecol;
create role extra8mech;
Содержимое cre_user.sql
create user "toshiba#extra8" login password 'none' SUPERUSER IN-HERIT CREATEDB CREATEROLE;
grant extra8user to "toshiba#extra8" with admin option;
-- роль-пустышка для идентификации администраторов
grant extra8admin to "toshiba#extra8" with admin option;
grant extra8tech to "toshiba#extra8" with admin option;
grant extra8econ to "toshiba#extra8" with admin option;
grant extra8oboz to "toshiba#extra8" with admin option;
grant extra8diag to "toshiba#extra8" with admin option;
grant extra8ehz to "toshiba#extra8" with admin option;
grant extra8corr to "toshiba#extra8" with admin option;
grant extra8him to "toshiba#extra8" with admin option;
grant extra8hydr to "toshiba#extra8" with admin option;
grant extra8dict to "toshiba#extra8" with admin option;
grant extra8ecol to "toshiba#extra8" with admin option;
grant extra8mech to "toshiba#extra8" with admin option;