Crear base de datos desde la línea de comandos


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;

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

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 ;


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


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


2
PGPORT=5432
PGHOST="my.database.domain.com"
PGUSER="postgres"
PGDB="mydb"
createdb -h $PGHOST -p $PGPORT -U $PGUSER $PGDB
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.