【问题标题】:How to create a user for Postgres from the command line for bash automation如何从命令行为 bash 自动化创建 Postgres 用户
【发布时间】:2013-09-10 09:33:28
【问题描述】:

我使用的是 Ubuntu 12.04 和 Postgress 9.2。

我需要使用此密码创建此用户,例如

postgres://admin:test101@127.0.0.1:5432

如何从命令行执行此操作?我需要使用 bash 脚本自动化。我有一个全新的安装。

【问题讨论】:

    标签: postgresql ubuntu postgresql-9.2


    【解决方案1】:

    这将在 localhost 上创建密码为 test101 的用户 admin:

    psql -c "CREATE USER admin WITH PASSWORD 'test101';"
    

    【讨论】:

    • psql -c "使用密码'passo'创建用户 khophi;" psql:致命:角色“khophi”不存在这是我收到的错误消息。为什么?
    • @Rexford 我不再使用 Postgresql。我想 psql 正在尝试使用您的用户名连接到数据库,但您没有在数据库中创建任何此类用户。这是全新安装吗?如果你在 Ubuntu 上,试试这个(替代设置)help.ubuntu.com/community/PostgreSQL
    • 是的,它的全新安装。我遵循了 Ubuntu wiki 上的 postgresql 安装指南
    • 供以后参考。运行命令时,postgres 需要一个用户来执行查询。要设置不同于登录用户的用户(在本例中为 khophi),您应该使用 -U 标志。例如 psql -U postgres -c "..."。全新安装后,您有一个名为 postgres 且没有密码的默认超级用户。在 ubuntu 中,您应该执行以下操作: $>sudo su $>su postgres $>psql -c ".... # now running as postgres user
    • sudo su postgres 。不需要经过root状态。
    【解决方案2】:

    要从任何用户运行它,只需将sudo -u postgres 添加到它:

    sudo -u postgres bash -c "psql -c \"CREATE USER vagrant WITH PASSWORD 'vagrant';\""
    

    【讨论】:

    • @knocte 你可能是对的。没有它你测试过吗? sudo -u postgres "psql -c \"CREATE USER vagrant WITH PASSWORD 'vagrant';\"" 似乎可以正常工作。
    • 如果您从 root 运行,您可能会收到类似 could not change directory to "/root": Permission denied 的错误,因此最好使用 -i 运行 sudo,如下所示:sudo -i -u postgres psql -c "CREATE USER myuser WITH PASSWORD 'myuser1234';"
    【解决方案3】:

    例如,要在原始 docker 映像上运行它,您可以将 su -c 命令与 postgres 用户结合使用 psql:

    su -c "psql -c \"CREATE ROLE my_user WITH LOGIN PASSWORD 'my_password' \"" postgres
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-07
      • 2013-06-22
      • 1970-01-01
      • 1970-01-01
      • 2018-02-11
      • 2013-02-21
      相关资源
      最近更新 更多