21.2. Создание базы данных#
21.2. Создание базы данных #
Для создания базы данных сервер Tantor BE должен быть запущен и работать (см. Раздел 17.3).
Базы данных создаются с помощью SQL-команды CREATE DATABASE:
CREATE DATABASE name
;
где name
следует обычным правилам для идентификаторов SQL. Текущая роль автоматически становится владельцем новой базы данных. Владелец базы данных имеет привилегию удалить ее позже (что также удаляет все объекты в ней, даже если они имеют другого владельца).
Создание баз данных является ограниченной операцией. См. Раздел 20.2 для получения информации о том, как предоставить разрешение.
Поскольку для выполнения команды CREATE DATABASE
необходимо быть подключенным к серверу баз данных, остается вопрос, как создать первую базу данных на любом конкретном сайте. Первая база данных всегда создается командой initdb
при инициализации области хранения данных. (См. Раздел 17.2). Эта база данных называется postgres
.
Чтобы создать первую “обычную” базу данных, вы можете подключиться к postgres
.
Два дополнительных базы данных,
template1
и
template0
,
также создаются во время инициализации кластера баз данных. Когда создается новая база данных внутри кластера, template1
фактически клонируется. Это означает, что любые изменения, внесенные в template1
, распространяются на все последующие созданные базы данных. Соответственно, избегайте создания объектов в template1
, если вы не хотите, чтобы они переносились в каждую новую созданную базу данных.
template0
представляет собой чистую копию исходного содержимого template1
. Его можно клонировать вместо template1
, когда важно создать базу данных без таких локальных для сервера дополнений. Подробности приведены в разделе Раздел 21.3.
В качестве удобства, есть программа, которую вы можете выполнить из оболочки для создания новых баз данных, createdb
.
createdb dbname
createdb
не делает никакой магии. Он подключается к базе данных postgres
и выполняет команду CREATE DATABASE
, точно как описано выше.
На странице справки createdb содержатся подробности вызова.
Обратите внимание, что createdb
без аргументов создаст базу данных с именем текущего пользователя.
Примечание
Глава 19 содержит информацию о том, как ограничить доступ к определенной базе данных.
Иногда вам может понадобиться создать базу данных для кого-то другого и сделать его владельцем новой базы данных, чтобы он мог настроить и управлять ею самостоятельно. Чтобы достичь этого, используйте одну из следующих команд:
CREATE DATABASEdbname
OWNERrolename
;
из среды SQL, или:
createdb -Orolename
dbname
из командной строки. Только суперпользователь может создавать базу данных для другого пользователя (то есть для роли, к которой вы не принадлежите).