Erstellen Sie eine Datenbank über die Befehlszeile

97

Ich versuche eine Datenbank über die Kommandozeile zu erstellen. Mein Betriebssystem ist Centos und die Postgres-Version ist 10.9.

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

Warum mich nach Benutzer fragen?

Juan Reina Pascual
quelle
Mögliches Duplikat von Wie konfiguriere ich postgresql zum ersten Mal?
Evan Carroll

Antworten:

134

Ändern Sie den Benutzer in postgres:

su - postgres

Benutzer für Postgres erstellen

$ createuser testuser

Datenbank erstellen

$ createdb testdb

Zugriff auf die Postgres Shell

psql ( enter the password for postgressql)

Stellen Sie dem Postgres-Benutzer die Berechtigungen zur Verfügung

$ alter user testuser with encrypted password 'qwerty';
$ grant all privileges on database testdb to testuser;
Django-Renjith
quelle
20
Wichtig: createuser und createdb werden in der Shell und NICHT mit psql ausgeführt.
Kim Kern
16
Aber wenn mit psql ausgeführt, sind die richtigen Befehle:create user testuser; create database testdb;
kiril
Du bist toll! Vielen Dank!
Urasquirrel
57

Versuchen:

sudo -u postgres psql -c 'create database test;'
Tulsluper
quelle
7
Vergessen Sie nicht, auch Berechtigungen zu erteilen:sudo -u postgres psql -c 'grant all privileges on database test to username;'
lukyer
27

createdbist ein Befehlszeilenprogramm, das Sie von bash und nicht von psql ausführen können. Um eine Datenbank aus psql zu erstellen, verwenden Sie die Anweisung create database wie folgt:

create database [databasename];

Hinweis: Beenden Sie Ihre SQL-Anweisungen immer mit ;

Arif Usman
quelle
2
Plus eins für den Hinweis über das Ende mit;
Jstuff
Ich wollte nur kommentieren, dass Postgres UPPERCASE zu senken macht. Also CREATE DATABASE FOOwürde eigentlich Datenbank namens erstellt foo. Ich habe ungefähr 5 Minuten gebraucht, um herauszufinden, warum "Datenbank nicht existiert". siehe: stackoverflow.com/questions/43111996/…
O-9
21

Wie einige der Antworten zeigen, createdbhandelt es sich um ein Befehlszeilenprogramm, mit dem eine Datenbank erstellt werden kann.

Angenommen, Sie haben einen Benutzer namens dbuser, kann der folgende Befehl verwendet werden, um eine Datenbank zu erstellen und Zugriff auf Folgendes zu gewähren dbuser:

createdb -h localhost -p 5432 -U dbuser testdb

Ersetzen Sie localhostdurch Ihren korrekten DB-Hostnamen, 5432durch den richtigen DB-Port und testdbdurch den Datenbanknamen, den Sie erstellen möchten.

Jetzt psqlkann eine Verbindung zu dieser neu erstellten Datenbank hergestellt werden:

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

Getestet mit createdbund psqlVersionen 9.4.15.

Antonius
quelle
Dies war der richtige Weg, um eine Datenbank für eine Instanz zu erstellen, zu der ich nicht ssh kann. Bei allen Versuchen, "CREATE DB" als -c-Parameter für das Remote-Dienstprogramm psql auszuführen, wurde davon ausgegangen, dass eine Datenbank mit dem Namen "Benutzer" vorhanden ist
Gili Garibi,
13

Als Standardkonfiguration von Postgres wird ein Benutzer namens postgres erstellt, und der Benutzer postgres hat vollen Superadministratorzugriff auf die gesamte PostgreSQL-Instanz, die auf Ihrem Betriebssystem ausgeführt wird.

sudo -u postgres psql

Mit dem obigen Befehl erhalten Sie die psql-Befehlszeilenschnittstelle im Admin-Modus.

Benutzer erstellen

sudo -u postgres createuser <username>

Datenbank erstellen

 sudo -u postgres createdb <dbname>

HINWEIS: <> dürfen beim Schreiben von Befehlen nicht verwendet werden, sondern nur zur Kennzeichnung der Variablen

Gaurav Sachdeva
quelle
2
PGPORT=5432
PGHOST="my.database.domain.com"
PGUSER="postgres"
PGDB="mydb"
createdb -h $PGHOST -p $PGPORT -U $PGUSER $PGDB
James Wierzba
quelle