Перейти к основному содержимому

Создание базы данных

примечание

Эта страница переведена при помощи нейросети 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

Выполнить эту операцию может только суперпользователь или пользователь, имеющий право создавать базы данных для других лиц (то есть для ролей, в которые он не входит).