Utwórz bazę danych z wiersza poleceń

115

Próbuję utworzyć bazę danych z wiersza poleceń. Mój system operacyjny to centos, a wersja postgres to 10.9.

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

Dlaczego pytasz mnie przez użytkownika?

Juan Reina Pascual
źródło
Możliwy duplikat Jak skonfigurować postgresql po raz pierwszy?
Evan Carroll

Odpowiedzi:

157

Zmień użytkownika na postgres:

su - postgres

Utwórz użytkownika dla Postgres

$ createuser testuser

Utwórz bazę danych

$ createdb testdb

Dostęp do postgres Shell

psql ( enter the password for postgressql)

Nadaj uprawnienia użytkownikowi postgres

$ alter user testuser with encrypted password 'qwerty';
$ grant all privileges on database testdb to testuser;
django-renjith
źródło
24
Ważne: createuser i createdb są uruchamiane w powłoce, a NIE z psql.
Kim Kern
22
Ale jeśli uruchomisz z psql, prawidłowe polecenia to:create user testuser; create database testdb;
kiril
66

Próbować:

sudo -u postgres psql -c 'create database test;'
tulsluper
źródło
9
nie zapomnij również o przyznaniu uprawnień:sudo -u postgres psql -c 'grant all privileges on database test to username;'
lukyer
32

createdbto narzędzie wiersza poleceń, które można uruchomić z basha, a nie z psql. Aby utworzyć bazę danych z psql, użyj instrukcji create database w następujący sposób:

create database [databasename];

Uwaga: pamiętaj, aby zawsze kończyć instrukcje SQL znakiem ;

Arif Usman
źródło
3
Plus jeden za wskazówkę dotyczącą zakończenia na;
Jstuff
Chciałem tylko skomentować, że Postgres sprawia, że ​​WIELKIE LITERY są niższe. Więc CREATE DATABASE FOOfaktycznie utworzyłbym bazę danych o nazwie foo. Zajęło mi około 5 minut, aby dowiedzieć się, dlaczego „baza danych nie istnieje”. patrz: stackoverflow.com/questions/43111996/ ...
O-9
26

Jak wskazują niektóre odpowiedzi, createdbjest to narzędzie wiersza poleceń, które można wykorzystać do utworzenia bazy danych.

Zakładając, że masz nazwanego użytkownika dbuser, możesz użyć następującego polecenia do utworzenia bazy danych i zapewnienia dostępu do dbuser:

createdb -h localhost -p 5432 -U dbuser testdb

Zastąp localhostpoprawną nazwą hosta DB,5432 poprawnym portem DB i testdbnazwą bazy danych, którą chcesz utworzyć.

Teraz psqlmoże zostać użyty do połączenia się z tą nowo utworzoną bazą danych:

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

Testowane z wersjami createdbi .psql9.4.15

Antony
źródło
To był właściwy sposób na utworzenie bazy danych na instancji, do której nie mogę ssh. Wszystkie próby uruchomienia parametru „CREATE DB” jako -c dla zdalnego narzędzia psql zakładały istnienie bazy danych o nazwie takiej jak użytkownik
Gili Garibi
14

Jako domyślna konfiguracja Postgres, tworzony jest użytkownik o nazwie postgres, a użytkownik postgres ma pełny dostęp superadministratora do całej instancji PostgreSQL działającej w twoim systemie operacyjnym.

sudo -u postgres psql

Powyższe polecenie powoduje wyświetlenie interfejsu wiersza poleceń psql w trybie administratora.

Tworzenie użytkownika

sudo -u postgres createuser <username>

Tworzenie bazy danych

 sudo -u postgres createdb <dbname>

UWAGA: <> nie mogą być używane podczas pisania komend, służą jedynie do oznaczenia zmiennych

Gaurav Sachdeva
źródło
2
PGPORT=5432
PGHOST="my.database.domain.com"
PGUSER="postgres"
PGDB="mydb"
createdb -h $PGHOST -p $PGPORT -U $PGUSER $PGDB
James Wierzba
źródło
Jeśli zmienisz „PGDB” na „PGDATABASE” i wyeksportujesz je (lub dodasz przedrostek do polecenia), nie musisz ich przekazywać do polecenia, odczyta je ze środowiska.
Connor Bell