Crear base de datos desde la línea de comandos

105

Estoy intentando crear una base de datos desde la línea de comandos. Mi sistema operativo es centos y la versión de postgres es 10.9.

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

¿Por qué preguntarme por usuario?

Juan Reina Pascual
fuente
Posible duplicado de ¿Cómo configurar postgresql por primera vez?
Evan Carroll

Respuestas:

144

Cambie el usuario a postgres:

su - postgres

Crear usuario para Postgres

$ createuser testuser

Crear base de datos

$ createdb testdb

Accede al Shell de postgres

psql ( enter the password for postgressql)

Proporcionar los privilegios al usuario de postgres

$ alter user testuser with encrypted password 'qwerty';
$ grant all privileges on database testdb to testuser;
django-renjith
fuente
21
Importante: createuser y createdb se ejecutan en el shell y NO con psql.
Kim Kern
20
Pero si se ejecuta con psql, los comandos correctos son:create user testuser; create database testdb;
kiril
63

Tratar:

sudo -u postgres psql -c 'create database test;'
tulsluper
fuente
8
no olvide otorgar permisos también:sudo -u postgres psql -c 'grant all privileges on database test to username;'
lukyer
30

createdbes una utilidad de línea de comandos que puede ejecutar desde bash y no desde psql. Para crear una base de datos desde psql, use la declaración de creación de base de datos así:

create database [databasename];

Nota: asegúrese de terminar siempre sus declaraciones SQL con ;

Arif Usman
fuente
2
Más uno por la pista sobre terminar con;
Jstuff
Solo quería comentar que Postgres hace MAYÚSCULAS para reducir. Entonces CREATE DATABASE FOOcrearía una base de datos llamada foo. Me tomó como 5 minutos averiguar por qué "la base de datos no existe". ver: stackoverflow.com/questions/43111996/…
O-9
24

Como señalan algunas de las respuestas, createdbes una utilidad de línea de comandos que podría usarse para crear una base de datos.

Suponiendo que tiene un usuario con nombre dbuser, el siguiente comando podría usarse para crear una base de datos y proporcionar acceso a dbuser:

createdb -h localhost -p 5432 -U dbuser testdb

Reemplácelo localhostcon su nombre de host de base de datos correcto, 5432con el puerto de testdbbase de datos correcto y con el nombre de base de datos que desea crear.

Ahora psqlpodría usarse para conectarse a esta base de datos recién creada:

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

Probado con versiones createdby .psql9.4.15

Antonio
fuente
Esta era la forma correcta de crear una base de datos en una instancia a la que no puedo acceder. Todos los intentos de ejecutar "CREATE DB" como -c param para la utilidad psql remota asumieron la existencia de una base de datos con el nombre del usuario
Gili Garibi
13

Como configuración predeterminada de Postgres, se crea un usuario llamado postgres y el usuario postgres tiene acceso completo de superadministrador a toda la instancia de PostgreSQL que se ejecuta en su sistema operativo.

sudo -u postgres psql

El comando anterior le proporciona la interfaz de línea de comandos psql en modo de administrador.

Creando usuario

sudo -u postgres createuser <username>

Creando base de datos

 sudo -u postgres createdb <dbname>

NOTA: <> no se deben usar mientras se escribe el comando, se usan solo para indicar las variables

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