【问题标题】:Create database from command line从命令行创建数据库
【发布时间】:2022-04-03 17:46:38
【问题描述】:

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

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

为什么用户要问我?

【问题讨论】:

标签: postgresql


【解决方案1】:

将用户更改为 postgres :

su - postgres

为 Postgres 创建用户(在 shell 中,NOT 使用 psql)

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

【讨论】:

  • 重要提示:createuser 和 createdb 在 shell 中运行,而 NOT 使用 psql。
  • 但是如果用psql运行,正确的命令是:create user testuser; create database testdb;
  • 如果用户名为'user',是否可以运行为“$ alter user user with encrypted password 'qwerty';”
【解决方案2】:

试试:

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

【讨论】:

  • 不要忘记授予权限:sudo -u postgres psql -c 'grant all privileges on database test to username;'
  • 在mac上,它只是psql -c 'create database test;'
【解决方案3】:

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

create database [databasename];

注意:请务必始终以 ; 结束您的 SQL 语句

【讨论】:

  • 加一个提示以;结尾
  • 只是想评论 Postgres 使大写降低。所以CREATE DATABASE FOO 实际上会创建名为foo 的数据库。我花了大约 5 分钟才弄清楚为什么“数据库不存在”。见:stackoverflow.com/questions/43111996/…
【解决方案4】:

正如一些答案所指出的,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 访问的实例上创建数据库的正确方法。所有将“CREATE DB”作为远程 psql 实用程序的 -c 参数运行的尝试都假定存在一个名为用户的数据库
【解决方案5】:

作为 Postgres 的默认配置,创建了一个名为 postgres 的用户,并且用户 postgres 拥有对在您的操作系统上运行的整个 PostgreSQL 实例的完全超级管理员访问权限。 p>

sudo -u postgres psql

上面的命令让你在管理员模式下获得 psql 命令行界面。

创建用户

sudo -u postgres createuser <username>

创建数据库

 sudo -u postgres createdb <dbname>

注意: 不能在编写命令时使用,它们仅用于表示变量

【讨论】:

    【解决方案6】:
    PGPORT=5432
    PGHOST="my.database.domain.com"
    PGUSER="postgres"
    PGDB="mydb"
    createdb -h $PGHOST -p $PGPORT -U $PGUSER $PGDB
    

    【讨论】:

    • 如果您将 'PGDB' 更改为 'PGDATABASE' 并导出它们(或将它们作为命令的前缀),那么您不需要将它们传递给命令,它会从环境。
    【解决方案7】:

    PostgreSQL Create Database - 在 Postgres 中创建数据库的步骤。

    1. 使用 postgres 用户登录服务器。
      su - postgres
    2. 连接到 postgresql 数据库。
    bash-4.1$ psql
    psql (12.1)
    键入“帮助”以获得帮助。
    postgres=#
    1. 执行以下命令创建数据库。
    创建数据库数据库名称;

    查看以下详细信息: https://orahow.com/postgresql-create-database/

    【讨论】:

    • 请注意行尾的; 字符!输入它很重要!验证数据库确实是使用\l 创建的
    【解决方案8】:

    使用单个命令行:

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

    【讨论】:

      【解决方案9】:

      如果您使用的是 pgAdmin:

      在查询编辑器中你可以这样尝试:

      CREATE DATABASE <databasename>
          WITH 
          OWNER = <dbowner>
          ENCODING = <encoding>
          CONNECTION LIMIT = <numberofsimulaneousconnections>;
      

      sn-p 示例:

      CREATE DATABASE twitterdb
          WITH 
          OWNER = postgres
          ENCODING = 'UTF8'
          CONNECTION LIMIT = -1;
      

      【讨论】:

        猜你喜欢
        • 2013-02-21
        • 1970-01-01
        • 2011-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多