23.2. Создание базы данных
Для создания базы данных сервер PostgreSQL должен быть развёрнут и запущен (см. Раздел 19.3).
База данных создаётся SQL-командой CREATE DATABASE:
CREATE DATABASE имя
;
где имя
подчиняется правилам именования идентификаторов SQL. Текущий пользователь автоматически назначается владельцем. Владелец может удалить свою базу, что также приведёт к удалению всех её объектов, в том числе, имеющих других владельцев.
Создание баз данных это привилегированная операция. Как предоставить права доступа, описано в Разделе 22.2.
Поскольку для выполнения команды CREATE DATABASE
необходимо подключение к серверу базы данных, возникает вопрос как создать самую первую базу данных. Первая база данных всегда создаётся командой initdb
при инициализации пространства хранения данных (см. Раздел 19.2.) Эта база данных называется postgres
. Далее для создания первой «обычной» базы данных можно подключиться к postgres
.
Две дополнительные базы данных template1
и template0
также создаются во время инициализации кластера. При каждом создании новой базы данных в рамках кластера по факту производится клонирование шаблона template1
. При этом любые изменения, сделанные в template1
, распространяются на все созданные впоследствии базы данных. Следует избегать создания объектов в template1
, за исключением ситуации, когда их необходимо автоматически добавлять в новые базы. База template0
представляет собой чистую копию исходного содержимого template1
. Поэтому её можно клонировать вместо template1
, когда важно создать базу данных без каких-либо локальных дополнений. Подробнее об этом рассказывается в Разделе 23.3.
Для удобства, есть утилита командной строки для создания баз данных, createdb
.
createdb dbname
Утилита createdb
не делает ничего волшебного, она просто подключается к базе данных postgres
и выполняет ранее описанную SQL-команду CREATE DATABASE
. Подробнее о её вызове можно узнать в createdb. Обратите внимание, что команда createdb
без параметров создаст базу данных с именем текущего пользователя.
Примечание
Глава 21 содержит информацию о том, как ограничить права на подключение к заданной базе данных.
Иногда необходимо создать базу данных для другого пользователя и назначить его владельцем, чтобы он мог конфигурировать и управлять ею. Для этого используйте одну из следующих команд:
CREATE DATABASEимя_базы
OWNERимя_роли
;
из среды SQL, или:
createdb -Oимя_роли
имя_базы
из командной строки ОС. Лишь суперпользователь может создавать базы данных для других (для ролей, членом которых он не является).