Создание базы данных
Эта страница переведена при помощи нейросети GigaChat.
Для создания базы данных сервер PostgreSQL должен быть запущен и работать (см. раздел Запуск сервера баз данных).
Базы данных создаются с помощью команды SQL CREATE DATABASE:
CREATE DATABASE name;
Имя новой базы данных (name
) должно следовать стандартным правилам идентификаторов SQL. Владельцем базы данных автоматически назначается текущая роль пользователя. Права владельца включают возможность последующего удаления базы данных (при этом удалятся и все содержащиеся в ней объекты, даже если их владельцы другие).
Создание баз данных ограничено набором привилегий. Информацию о том, как предоставить разрешение на создание базы данных, смотрите в разделе «Атрибуты ролей».
Так как для выполнения команды CREATE DATABASE
необходимо подключение к серверу, встает вопрос, как создать первую базу данных на сервере. Первую базу данных (postgres
) создает утилита initdb
при инициализации хранилища данных (см. раздел Создание кластера баз данных). Подключаясь к базе данных postgres
, можно создать первую рабочую базу данных.
Помимо основной базы данных, при инициализации кластера автоматически создаются еще две базы данных: template1
и template0
. При создании новой базы данных в кластере она фактически дублирует содержимое template1
. Любые изменения в template1
отразятся на всех последующих базах данных. Чтобы избежать распространения ненужных объектов, старайтесь не вносить изменения в template1
, если не планируете распространение этих изменений на все новые базы данных. База данных template0
сохраняет оригинальное чистое состояние template1
, и ее можно использовать для создания баз данных без дополнительных объектов. Подробности изложены в разделе «Шаблоны баз данных».
Для удобства можно использовать утилиту createdb
, которая выполняет команду CREATE DATABASE
от имени пользователя:
createdb dbname
createdb
подключается к базе данных postgres
и выполняет команду CREATE DATABASE
. Детали работы утилиты описаны на странице справочной документации createdb. Если вызвать createdb
без аргументов, будет создана база данных с именем текущего пользователя.
Раздел «Аутентификация клиентского приложения» содержит информацию о том, как ограничить круг лиц, которые могут подключаться к определенной базе данных.
Иногда требуется создать базу данных для другого пользователя и сразу передать ему права владельца, чтобы он смог самостоятельно настроить и управлять ею. Для этого воспользуйтесь одной из следующих команд:
CREATE DATABASE dbname OWNER rolename;
Через интерфейс SQL или через командную строку.
createdb -O rolename dbname
Выполнить эту операцию может только суперпользователь или пользователь, имеющий право создавать базы данных для других лиц (то есть для ролей, в которые он не входит).