如何从命令行为 bash 自动化创建 Postgres 用户
Posted
技术标签:
【中文标题】如何从命令行为 bash 自动化创建 Postgres 用户【英文标题】:How to create a user for Postgres from the command line for bash automation 【发布时间】:2013-09-10 09:33:28 【问题描述】:我使用的是 Ubuntu 12.04 和 Postgress 9.2。
我需要使用此密码创建此用户,例如
postgres://admin:test101@127.0.0.1:5432
如何从命令行执行此操作?我需要使用 bash 脚本自动化。我有一个全新的安装。
【问题讨论】:
【参考方案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
【讨论】:
以上是关于如何从命令行为 bash 自动化创建 Postgres 用户的主要内容,如果未能解决你的问题,请参考以下文章