我正在尝试编写 shell 脚本来创建具有 super 用户权限的 postgres 数据库用户,然后通过使用新创建的用户登录自动运行一些 sql 脚本。
我尝试了下面的两个脚本,但我正在进入 psql 交互模式,我们如何避免任何外部输入并提供所有必需的凭据并使用给定路径中的一些脚本完成创建用户/数据库/和表。如果有任何不清楚的地方,请允许我更正。
脚本1:
#!/bin/sh
username="testuser"
psql $username << EOF
CREATE ROLE $username WITH SUPERUSER CREATEDB CREATEROLE LOGIN ENCRYPTED PASSWORD 'password';
EOF
以“root”身份运行上述脚本时的结果 评论:testuser是linux用户不是postgres用户??
Password:
注释:用户“testuser”的密码输入
psql: FATAL: password authentication failed for user "root"
脚本2
#!/bin/sh
username="testuser"
echo """
CREATE ROLE $username WITH SUPERUSER CREATEDB CREATEROLE LOGIN ENCRYPTED PASSWORD 'password';
""" | psql
最佳答案
psql -c
在不进入交互模式的情况下执行命令。
查看http://www.postgresql.org/docs/9.3/static/app-psql.html
关于linux - 添加具有 super 用户权限的 postgres 用户的 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25758227/