Для того чтобы создать базу данных, Digital Q.DataBase сервер должен быть запущен (см. Раздел 3.3.3).
Базы данных создаются с помощью SQL-команды CREATE DATABASE:
CREATE DATABASE имя;
где имя соответствует обычным правилам для
SQL идентификаторов. Текущая роль автоматически становится владельцем новой базы данных. Владелец базы данных имеет право на ее последующее удаление (что также приводит к удалению всех содержащихся в ней объектов, даже если у них другой владелец).
Создание баз данных является операцией с ограниченным доступом. См. Раздел 3.6.2 инструкции по предоставлению соответствующих прав.
Поскольку для выполнения данной команды необходимо подключение к серверу баз данных CREATE DATABASE команде, остается вопрос о том, как первая база данных может быть создана на любом конкретном
узле. Первая база данных всегда создается с помощью
initdb команды при инициализации области хранения данных. (См. Раздел 3.3.2.) Эта
база данных называется
postgres. Таким образом, чтобы
создать первую «обычную» базу данных, вы можете подключиться к
postgres.
Две дополнительные базы данных,
template1
и
template0,
также создаются во время инициализации кластера баз данных. Каждый раз, когда в кластере создается новая база данных, template1 по сути, клонируется.
Это означает, что любые изменения, которые вы вносите в template1 наследуются всеми базами данных, созданными впоследствии. В связи с этим
избегайте создания объектов в template1 если только вы не хотите, чтобы они копировались в каждую вновь создаваемую базу данных.
template0 предназначена для использования в качестве исходной копии содержимого template1. Ее можно клонировать вместо
того, чтобы template1 когда важно создать базу данных
без каких-либо локальных дополнений. Более подробная информация
приведена в Раздел 3.7.3.
Для удобства существует программа, которую можно запустить из командной оболочки для создания новых баз данных,
createdb.
createdb dbname
createdb не выполняет никаких скрытых действий. Она подключается к postgres
базе данных и выполняет CREATE DATABASE команду,
точно так же, как описано выше.
Страница createdb справочного руководства содержит сведения о параметрах вызова. Обратите внимание, что createdb без аргументов создаст
базу данных с именем текущего пользователя.
Глава 3.5 содержит информацию о том, как ограничить права на подключение к конкретной базе данных.
Иногда требуется создать базу данных для другого пользователя и сделать его владельцем новой базы данных, чтобы он мог самостоятельно настраивать её и управлять ею. Для этого выполните одну из следующих команд:
CREATE DATABASEdbnameOWNERимя_роли;
из SQL-среды или:
createdb -Oимя_ролиdbname
из командной оболочки. Только суперпользователь имеет право создавать базу данных для другого пользователя (то есть для роли, членом которой вы не являетесь).