PostgreSQL — свободная объектно-реляционная система управления базами данных (СУБД). Существует в реализациях для множества UNIX-подобных платформ, включая AIX, различные BSD-системы, HP-UX, IRIX, Linux, macOS, Solaris/OpenSolaris, Tru64, QNX, а также для Microsoft Windows.
В инструкции предполагается, что сама СУБД уже установлена в Ubuntu. Рассмотрим создание рабочей базы данных.
Для создания новой базы данных у нас должен быть доступ к программной оболочке PostgreSQL. Для его получения необходимо подключиться к системе с помощью учётной записи postgres:
sudo su - postgres
Далее выполним команду psql:
psql
Следующая команда добавит в PostgreSQL пользователя admin (на каждом сервере должны быть свои имена пользователей и баз данных):
CREATE USER admin WITH PASSWORD 'masterkey';
где 'masterkey' — пароль пользователя admin.
Для создания базы данных, например admindb, необходимо выполнить команду:
CREATE DATABASE admindb;
Но в этом случае будет ошибка "кодировка UTF-8 не соответствует локали en_US; выбранная настройка LC_CTYPE требует кодировки LATIN1", так как шаблон, из которого создается база данных, основан на кодировке LATIN1, а нам нужна UTF-8. Выходим полностью из базы данных и пользователя "postgres":
\q
exit
Для исправления данной ошибки выполним следующие действия. Создадим файл командой:
nano /etc/profile.d/lang.sh
Добавим в него следующие содержимое:
export LANGUAGE="en_US.UTF-8"
export LANG="en_US.UTF-8"
export LC_ALL="en_US.UTF-8"
Зайдем снова в базу данных postgres:
sudo su - postgres
psql
Далее выполняем команды по очереди:
update pg_database set datistemplate=false where datname='template1';
drop database Template1;
create database template1 with owner=postgres encoding='UTF-8'lc_collate='en_US.utf8' lc_ctype='en_US.utf8' template template0;
update pg_database set datistemplate=true where datname='template1';
Создадим базу данных командой (английская локализация):
CREATE DATABASE admindb WITH OWNER = postgres ENCODING = 'UTF8' TABLESPACE = pg_default LC_COLLATE = 'en_US.utf8' CONNECTION LIMIT = -1 TEMPLATE template1;
Или создадим базу данных командой (русская локализация):
CREATE DATABASE admindb WITH OWNER = postgres ENCODING = 'UTF8' TABLESPACE = pg_default LC_COLLATE = 'ru_RU.UTF-8' CONNECTION LIMIT = -1 TEMPLATE template1;
Проверим вывод информации о базе данных командой:
\l
База данных должна быть создана в кодировке "UTF-8".
Теперь необходимо дать пользователю admin все права на базу данных. Для этого выполним команды:
GRANT ALL PRIVILEGES ON DATABASE admindb to admin;
ALTER USER admin WITH SUPERUSER;
GRANT postgres TO admin;
Источники: ruvds, stackoverflow