Postgresql 从命令行创建数据库

Postgresql 从命令行创建数据库,postgresql,Postgresql,我试图从命令行创建一个数据库。 我的操作系统是centos,postgres版本是10.9 sudo -u postgres psql createdb test Password for user test: 为什么按用户询问我?将用户更改为postgres: su - postgres 为Postgres创建用户 $ createuser testuser 创建数据库 $ createdb testdb 访问postgres Shell psql ( enter the passwo

我试图从命令行创建一个数据库。 我的操作系统是centos,postgres版本是10.9

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

为什么按用户询问我?

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

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

create database [databasename];
注意:确保SQL语句始终以
结尾

尝试:

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

作为Postgres的默认配置,将创建一个名为Postgres的用户,并且该用户Postgres具有对操作系统上运行的整个PostgreSQL实例的完全超级管理员访问权限

sudo -u postgres psql
上面的命令在管理模式下获取psql命令行界面

创建用户

sudo -u postgres createuser <username>
sudo-u postgres createuser
创建数据库

 sudo -u postgres createdb <dbname>
sudo-u postgres createdb

注意:<>在编写命令时不能使用,它们只是用来表示变量

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

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

createdb -h localhost -p 5432 -U dbuser testdb
localhost
替换为正确的数据库主机名,
5432
替换为正确的数据库端口,
testdb
替换为要创建的数据库名

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

psql -h localhost -p 5432 -U dbuser -d testdb
使用
createdb
psql
版本
9.4.15

测试-在Postgres中创建数据库的步骤。

PGPORT=5432
PGHOST="my.database.domain.com"
PGUSER="postgres"
PGDB="mydb"
createdb -h $PGHOST -p $PGPORT -U $PGUSER $PGDB
  • 使用postgres用户登录服务器。su-postgres su - postgres
  • 连接到postgresql数据库。
  • bash-4.1$psql psql(12.1) 键入“帮助”以获取帮助。 博士后=#
  • 执行下面的命令创建数据库。
  • 创建数据库名称; 查看以下详细信息:

    使用单个命令行:

    su -c "createuser dbuser;createdb -h localhost -p 5432 -E UTF8 -O dbuser dbname;" - postgres
    

    也不要忘记授予权限:
    sudo-u postgres psql-c'将数据库测试的所有权限授予username;'psql-c'createdatabasetest;'重要提示:createuser和createdb在shell中运行,不使用psql。但是如果使用psql运行,正确的命令是:
    create user testuser;创建数据库testdb加1的可能副本,用于提示以
    结尾只是想说明Postgres将大写改为小写。所以
    createdatabasefoo
    实际上会创建名为
    FOO
    的数据库。我花了5分钟才弄明白为什么“数据库不存在”。请参阅:这是在我无法使用ssh连接的实例上创建数据库的正确方法。所有将“CREATE DB”作为-c param for remote psql实用程序运行的尝试都假定存在一个名为username的数据库。如果将“PGDB”更改为“PGDATABASE”并将其导出(或将其作为命令的前缀),则无需将其传递给命令,它将从环境中读取它们。 CREATE DATABASE database_name;
    su -c "createuser dbuser;createdb -h localhost -p 5432 -E UTF8 -O dbuser dbname;" - postgres