Створіть базу даних із командного рядка


115

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

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

Чому мене запитує користувач?


Відповіді:


157

Змініть користувача на postgres:

su - postgres

Створити користувача для Postgres

$ createuser testuser

Створити базу даних

$ createdb testdb

Доступ до Postgres Shell

psql ( enter the password for postgressql)

Надайте привілеї користувачеві postgres

$ alter user testuser with encrypted password 'qwerty';
$ grant all privileges on database testdb to testuser;

24
Важливо: createuser та createdb запускаються в оболонці, а НЕ з psql.
Кім Керн,

22
Але якщо запускати за допомогою psql, правильні команди:create user testuser; create database testdb;
kiril

66

Спробуйте:

sudo -u postgres psql -c 'create database test;'

9
не забудьте також надати дозволи:sudo -u postgres psql -c 'grant all privileges on database test to username;'
lukyer

32

createdbце утиліта командного рядка, яку ви можете запускати з bash, а не з psql. Щоб створити базу даних із psql, використовуйте оператор створення бази даних приблизно так:

create database [databasename];

Примітка: обов’язково завжди закінчуйте свої оператори SQL з ;


3
Плюс один для підказки про закінчення;
Jstuff

Просто хотів прокоментувати, що Postgres робить UPPERCASE нижчим. Тож CREATE DATABASE FOOфактично створив би базу даних з іменем foo. Мені знадобилося 5 хвилин, щоб зрозуміти, чому "база даних не існує". див .: stackoverflow.com/questions/43111996/…
O-9,

26

Як зазначають деякі відповіді, 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 передбачали існування бази даних з іменем користувача
Гілі Гарібі,

14

Як конфігурація 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

Якщо ви зміните "PGDB" на "PGDATABASE" і експортуєте їх (або додасте їх до команди), тоді вам не потрібно передавати їх команді, вона буде читати їх із середовища.
Коннор Белл
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.