CREATE DATABASE

Тема дорожной карты · PostgreSQL

Команда CREATE DATABASE создаёт новую базу данных PostgreSQL внутри работающего кластера, формируя изолированное пространство имён для схем, таблиц, индексов и других объектов, обособленных от остальных баз данных на том же сервере. Базы данных PostgreSQL создаются путём клонирования шаблонной базы template1 (или template0), поэтому любые объекты, заранее помещённые в template1, появятся во всех последующих базах данных — это удобный паттерн для начальной инициализации расширений. К ключевым параметрам относятся: OWNER для назначения владельца, ENCODING для указания кодировки символов (обычно UTF8), LC_COLLATE и LC_CTYPE для порядка сортировки с учётом локали, а также TABLESPACE для размещения данных на определённом дисковом томе. Из командной строки утилита createdb — обёртка вокруг CREATE DATABASE — и мета-команда psql \l для вывода списка существующих баз данных являются стандартными инструментами администрирования реляционной базы данных в PostgreSQL.

Как это работает

CREATE DATABASE организует данные иерархически: кластер → БД → схема → объект (таблица, view, функция). Дефолтная схема — public; можно создать app, analytics, staging для пространств имён. search_path контролирует, по каким схемам ищутся неполные имена. Cross-database запросы НЕ разрешены (используйте foreign data wrappers); cross-schema — бесшовны. Роли (юзеры + группы) владеют объектами; права каскадятся через GRANT/REVOKE.

Когда применять

Схемы — для пространств имён логических модулей одного приложения (auth.users, billing.invoices): держит монолитную БД организованной без раздела на отдельные. Отдельные БД — для настоящего tenancy или полностью независимых приложений. Создавайте выделенную роль на каждый сервис (auth_service, billing_service); никогда не гоняйте под superuser postgres.

Типичные ошибки

Ловушки CREATE DATABASE: всё в public и через 3 года клубок прав; широкие права на public в 15+ БД ("дефолт с давних пор" — security exposure); забыли search_path в скриптах (запросы ломаются непредсказуемо в зависимости от сессии). \dn периодически — для аудита разрастания схем.

Связанные понятия

Полезные ресурсы