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


105

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

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

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


Ответы:


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;'

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>

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


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.