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

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

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

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

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

$ createdb mydb

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

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

createdb: command not found

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

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

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

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

createdb: could not connect to database postgres: could not connect to server: No such file or directory
No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

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

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

createdb: could not connect to database postgres: FATAL:  user "joe" does not
exist

где вместо joe упоминается ваше имя регистрации. Такое сообщение появляется если администратор не создал для вас пользователя в PostgreSQL. (Пользователь PostgreSQL — это не пользователь операционной системы). Если вы являетесь администратором, смотрите информацию о создании пользователя в Chapter 20. Вам понадобится зарегистрироваться в операционной системе под именем того пользователя, из под которого работает PostgreSQL (обычно postgres), чтобы создать первого пользователя в СУБД. Для команды создания базы, вы также можете указать в PostgreSQL имя пользователя, которое отличается от вашего текущего имени пользователя в операционной системе; в этом случае вам необходимо задать имя пользователя PostgreSQL с помощью опции -U или установки переменной окружения PGUSER.

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

createdb: database creation failed: ERROR:  permission denied to create database

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

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

$ createdb

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

$ dropdb mydb

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

Больше информации о командах createdb и dropdb можно найти соответственно в createdb и dropdb.

Notes

[1]

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

Back to top

(С) Виктор Вислобоков, 2008-2010