Создание базы данных
Эта страница переведена при помощи нейросети GigaChat.
Первый тест на доступ к серверу баз данных – это попытка создать базу данных. Работающий сервер PostgreSQL может управлять многими базами данных. Обычно для каждого проекта или для каждого пользователя используется отдельная база данных.
Возможно, администратор сайта уже создал базу данных для использования. В этом случае можно пропустить этот шаг и перейти к следующему разделу.
Чтобы создать новую базу данных, в данном примере с именем mydb
, используйте следующую команду:
$ createdb mydb
Если ответа не последовало, значит, этот шаг был выполнен успешно, и можно пропустить оставшуюся часть этого раздела.
Если видите сообщение, похожее на:
createdb: command not found
то, PostgreSQL был установлен неправильно. Либо он вообще не был установлен, либо путь поиска оболочки не был настроен так, чтобы включать его. Попробуйте вызвать команду с абсолютным путем:
$ /usr/local/pgsql/bin/createdb mydb
На сайте путь может быть другим. Обратитесь к администратору сайта или проверьте инструкции по установке, чтобы исправить ситуацию.
Другой ответ может быть таким:
createdb: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directory
Is the server running locally and accepting connections on that socket?
Это означает, что сервер не был запущен, или он не прослушивается там, где createdb
ожидает с ним связаться. Снова проверьте инструкции по установке или обратитесь к администратору.
Другой ответ может быть таким:
createdb: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: FATAL: role "joe" does not exist
где указано собственное имя входа в систему. Это произойдет, если администратор не создал учетную запись пользователя PostgreSQL. (Учетные записи пользователей PostgreSQL отличаются от учетных записей пользователей операционной системы.) Если являетесь администратором, обратитесь к разделу «Роли базы данных» за помощью в создании учетных записей. Чтобы создать первую учетную запись, нужно стать пользователем операционной системы, под которым был установлен PostgreSQL (обычно это postgres
). Также может быть, что было назначено имя пользователя PostgreSQL, которое отличается от имени пользователя операционной системы; в этом случае нужно использовать ключ -U
или установить переменную окружения PGUSER
, чтобы указать имя пользователя PostgreSQL.
Если есть учетная запись пользователя, но она не имеет привилегий, необходимых для создания базы данных, можно увидеть следующее:
createdb: error: database creation failed: ERROR: permission denied to create database
Не каждый пользователь имеет право создавать новые базы данных. Если PostgreSQL отказывается создавать базы данных, то администратор сайта должен предоставить разрешение на создание баз данных. В этом случае обратитесь к администратору сайта. Если PostgreSQL установлен самостоятельно, то для целей данного руководства следует войти в систему под учетной записью пользователя, под которой запускали сервер.
Примечание:
В качестве объяснения, почему это работает: имена пользователей PostgreSQL отделены от учетных записей пользователей операционной системы. Когда подключаетесь к базе данных, можно выбрать имя пользователя PostgreSQL для подключения; если не подключаетесь, по умолчанию оно будет иметь то же имя, что и текущая учетная запись операционной системы. Как оказалось, всегда будет учетная запись пользователя PostgreSQL с тем же именем, что и пользователь операционной системы, который запустил сервер, и также случается, что у этого пользователя всегда есть права на создание баз данных. Вместо входа в систему как этот пользователь можете также везде указать опцию
-U
, чтобы выбрать имя пользователя PostgreSQL для подключения.
Создавать базы данных с другими именами. PostgreSQL позволяет создавать любое количество баз данных на одном сайте. Имена баз данных должны содержать алфавитный первый символ и иметь длину не более 63 байт. Удобным вариантом является создание базы данных с тем же именем, что и имя вашего текущего пользователя. Многие инструменты принимают это имя базы данных за имя по умолчанию, так что это поможет сэкономить на вводе. Чтобы создать такую базу данных, просто введите:
$ createdb
Когда необходимость в базе данных отпадет, ее можно удалить. Например, если владелец (создавший) базы данных mydb
решит ее уничтожить, следует воспользоваться такой командой:
$ dropdb mydb
(Для этой команды имя базы данных не совпадает по умолчанию с именем учетной записи пользователя. Его всегда нужно указывать.) Это действие физически удаляет все файлы, связанные с базой данных, и не может быть отменено, поэтому его следует выполнять только с большой осторожностью.
Подробнее о createdb
и dropdb
можно прочитать в createdb и dropdb соответственно.