Создать базу данных из командной строки

105

Я пытаюсь создать базу данных из командной строки. Моя ОС - centos, а версия postgres - 10.9.

sudo -u postgres psql createdb test
Password for user test:

Почему спрашивает меня пользователь?

Хуан Рейна Паскуаль
источник
Возможный дубликат Как настроить postgresql впервые?
Эван Кэрролл,

Ответы:

144

Измените пользователя на postgres:

su - postgres

Создать пользователя для Postgres

$ createuser testuser

Создать базу данных

$ createdb testdb

Доступ к оболочке postgres

psql ( enter the password for postgressql)

Предоставьте привилегии пользователю postgres

$ alter user testuser with encrypted password 'qwerty';
$ grant all privileges on database testdb to testuser;
Джанго-Ренджит
источник
21
Важно: createuser и createdb запускаются в оболочке, а НЕ с psql.
Ким Керн
20
Но если запустить с psql, правильные команды:create user testuser; create database testdb;
kiril
63

Пытаться:

sudo -u postgres psql -c 'create database test;'
Tulsluper
источник
8
не забудьте также предоставить разрешения:sudo -u postgres psql -c 'grant all privileges on database test to username;'
lukyer
30

createdb- это утилита командной строки, которую можно запускать из bash, а не из psql. Чтобы создать базу данных из psql, используйте оператор create database следующим образом:

create database [databasename];

Примечание: всегда заканчивайте свои операторы SQL с помощью ;

Ариф Усман
источник
2
Плюс один за намек об окончании на;
Jstuff
Просто хотел прокомментировать, что Postgres делает заглавными буквами меньше. Так CREATE DATABASE FOOчто фактически создаст базу данных с именем foo. Мне потребовалось около 5 минут, чтобы понять, почему «база данных не существует». см .: stackoverflow.com/questions/43111996/…
O-9,
24

Как указывается в некоторых ответах, createdbэто утилита командной строки, которую можно использовать для создания базы данных.

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

createdb -h localhost -p 5432 -U dbuser testdb

Замените localhostправильным именем хоста БД, 5432правильным портом БД и testdbименем базы данных, которую вы хотите создать.

Теперь psqlможно использовать для подключения к этой вновь созданной базе данных:

psql -h localhost -p 5432 -U dbuser -d testdb

Протестировано createdbи psqlверсии 9.4.15.

Антоний
источник
Это был правильный способ создать базу данных на экземпляре, к которому я не могу использовать ssh. Все попытки запустить «CREATE DB» как параметр -c для удаленной утилиты psql предполагали существование базы данных с именем пользователя
Гили Гариби
13

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

sudo -u postgres psql

Приведенная выше команда открывает интерфейс командной строки psql в режиме администратора.

Создание пользователя

sudo -u postgres createuser <username>

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

 sudo -u postgres createdb <dbname>

ПРИМЕЧАНИЕ: <> не следует использовать при написании команды, они используются только для обозначения переменных

Гаурав Сачдева
источник
2
PGPORT=5432
PGHOST="my.database.domain.com"
PGUSER="postgres"
PGDB="mydb"
createdb -h $PGHOST -p $PGPORT -U $PGUSER $PGDB
Джеймс Вежба
источник