Создать базу данных в postgresql можно через какой-либо веб-интерфейс, установленный на сервере (например, pgAdmin) или в консоли.
Второй способ более универсален, им можно пользоваться для любого Linux сервера, рассмотрим этот способ.
Создать базу данных в Postgresql в консоли
Прежде всего требуется подключиться к серверу по SSH.
Далее подключиться к базе от имени пользователя postgres (по умолчанию существует только он)
sudo -u postgres psql
could not change directory to «/root»
psql (9.2.24)
Type «help» for help.
Если возникла ошибка, подобная приведенной выше — нужно перейти в любой каталог, в который postgres имеет доступ.
cd /tmp
sudo -u postgres psql
Чтобы попасть в базу без sudo и смены каталога можно выполнить 2 команды от имени пользователя root:
su - postgres
psql
Пример авторизации и вывод списка баз приведен на скриншоте:
Оказавшись к консоли можно создать базу данных
postgres=# CREATE DATABASE app;
CREATE DATABASE
Затем пользователя, которому присвоить пароль.
postgres=# CREATE USER appadmin WITH PASSWORD 'jkfdk8H0Indgshy6hk';
CREATE ROLE
Пользователи в PostgreSQL являются ролями. Для определенной базы созданному пользователю задаются нужные привилегии.
Например, полный доступ:
postgres=# GRANT ALL PRIVILEGES ON DATABASE app to appadmin;
GRANT
Также требуется скорректировать значения в одном из конфигурационных файлов
mcedit /var/lib/pgsql/data/pg_hba.conf
В файле содержится информация о методах аутентификации. Изначально работа с базой возможна только в случае если подключение выполняет системный пользователь с именем идентичным пользователю сервера баз данных.
На практике это обычно неудобно и требуется подключение с реквизитами специально созданного пользователя, по установленному паролю.
В файле потребуется заменить в двух строках, начинающихся с host тип аутентификации с ident на md5. Это последнее значение в каждой строке.
# TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all peer # IPv4 local connections: #host all all 127.0.0.1/32 ident host all all 127.0.0.1/32 md5 # IPv6 local connections: #host all all ::1/128 ident host all all ::1/128 md5
Для вступления в силу изменений нужно перезапустить сервис
systemctl restart postgresql
Установка postgresql на Centos и Debian
Если пакета postgresql на сервере еще нет, его нужно сначала установить.
postgresql есть в репозиториях всех популярных дистрибутивов.
Centos 7
yum install epel-release
yum install postgresql-server postgresql-devel postgresql-contrib
Debian 9+
apt-get update
apt-get install postgresql
После установки на CentOS требуется выполнить начальную настройку. Скрипт подобен mysql_secure_instalation в MySQL.
postgresql-setup initdb
Initializing database … OK
Для Debian / Ubuntu сервис запускается автоматически, для Centos его нужно стартовать и добавить в автозагрузку
systemctl start postgresql
systemctl enable postgresql
Читайте про подключение к базе данных с реквизитами созданного пользователя.
Если сайт, работающий с Postgresql переносится на другой сервер — требуется создать, а потом развернуть на другой машине дамп базы.