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

Первый тест, с помощью которого будет видно, что вы можете получить доступ к серверу баз данных - это попытка создать базу данных. Запущенный сервер PostgreSQL может управлять множеством баз данных. Обычно, для каждого проекта или каждого пользователя используется отдельная база данных.

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

Для создания новой базы данных, в этом примере называющейся mydb, вы можете использовать следующую команду:

$ createdb mydb

Команда должна выдать такой ответ:

CREATE DATABASE

Если он появился, то данный шаг был пройден успешно и вы можете пропустить написанное далее до конца этой секции.

Если вы получите что-то похожее на

createdb: command not found

то это означает, что продукт PostgreSQL не был правильно установлен. Или было установлено не все или путь поиска не был установлен соответствующим образом. Попытайтесь вызвать эту команду, используя полный путь:

$ /usr/local/pgsql/bin/createdb mydb

Полный путь на вашей машине может быть другим. Свяжитесь с вашим администратором или проверьте инструкции по установке, чтобы исправить ситуацию.

Другое сообщение, которое вы можете получить:

psql: could not connect to server: Connection refused
        Is the server running locally and accepting
        connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
createdb: database creation failed

Это означает, что сервер не был запущен или что он не был запущен так, как этого ожидает команда createdb. Снова, проверьте инструкции по установке или проконсультируйтесь с администратором.

Если у вас нет прав, требуемых для создания базы данных, вы увидите следующее сообщение:

ERROR:  CREATE DATABASE: permission denied
createdb: database creation failed

Не каждый пользователь имеет авторизацию для создания новых баз данных. Если PostgreSQL отвергает ваши попытки создания баз данных, то администратору вашей машины нужно дать вам права для создания баз данных. Проконсультируйтесь с ним в этом случае. Если вы устанавливали PostgreSQL сами, то вы должны для целей преследуемых этим учебником подключиться как пользователь, от имени которого запускается сервер баз данных. [1]

Вы можете также создавать базы данных с любыми другими именами. PostgreSQL позволяет вам создавать любое количество баз данных на одном сервере. Имена баз данных должны состоять из букв и цифр (вначале всегда должна быть буква) и быть не более 63 символов длиной. Довольно удобно создавать базу данных с таким же именем как у пользователя. Многие инструменты по умолчанию считают, что имя базы данных именно такое, так что вы сможете не нажимать лишние кнопки. Чтобы создать базу данных, просто наберите

$ createdb

Если вы не хотите использовать вашу базу данных в будущем, вы можете удалить ее. Например, если вы являетесь владельцем (создателем) базы данных mydb, вы можете уничтожить её, используя следующую команду:

$ dropdb mydb

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

Notes

[1]

В качестве объяснения как это работает: Имена пользователей в PostgreSQL существуют отдельно от имен пользователей в операционной системе. Если вы подключаетесь к какой-либо базе данных, вы можете выбрать для подключения какое-нибудь имя пользователя PostgreSQL; если вы это не сделаете, то по умолчанию будет установлено такое-же имя, какое у вас в операционной системе. Однако, всегда существует пользователь PostgreSQL, который имеет такое же имя как и в операционной системе и от имени которого осуществляется запуск сервера, а кроме того этот пользователь всегда имеет права на создание баз данных. Вместо того, чтобы регистрироваться под этим пользователем, вы можете также задать опцию -U и в ней указать имя того пользователя PostgreSQL, которое вы хотите использовать при подключении.