从命令行创建数据库


Answers:


144

将用户更改为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;

21
重要提示:createuser和createdb在shell中运行,而不是在psql中运行。
金肯

20
但是,如果使用psql运行,则正确的命令为:create user testuser; create database testdb;
kiril

63

尝试:

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

8
别忘了授予权限:sudo -u postgres psql -c 'grant all privileges on database test to username;'
lukyer

29

createdb是一个命令行实用程序,可以从bash而不是psql运行。要从psql创建数据库,请使用create database语句,如下所示:

create database [databasename];

注意:请确保始终以以下语句结束SQL语句 ;


2
外加一则提示以;
Jstuff '18

只是想评论一下Postgres使大写字母降低。因此CREATE DATABASE FOO实际上将创建名为的数据库foo。我花了大约5分钟的时间才弄清楚为什么“数据库不存在”。见:stackoverflow.com/questions/43111996/...
O-9

23

正如一些答案所指出的那样,它createdb是一个可用于创建数据库的命令行实用程序。

假设您有一个名为的用户dbuser,则以下命令可用于创建数据库并提供对以下内容的访问dbuser

createdb -h localhost -p 5432 -U dbuser testdb

localhost正确的数据库主机名,5432正确的数据库端口和testdb要创建的数据库名称替换。

现在psql可以用来连接到这个新创建的数据库:

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

测试了createdbpsql版本9.4.15


这是在我不能ssh访问的实例上创建数据库的正确方法。所有为远程psql实用程序将-C参数作为“ -C参数”运行“ CREATE DB”的尝试都假设存在一个名为用户的数据库
Gili Garibi,

13

作为Postgres的默认配置,将创建一个名为postgres的用户,该用户postgres对在您的OS上运行的整个PostgreSQL实例具有完全的超级管理员访问权限。

sudo -u postgres psql

上面的命令使您可以在admin模式下使用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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.