我有一个在部署时运行的shell脚本,其中有以下这些行:
# Database
createdb $DBNAME
createuser -D -A $DBNAME
然而,在我的日志中,我遇到了以下错误:
- createdb:无法连接到数据库postgres:用户“root”的标识身份验证失败
- createuser:无法连接到数据库postgres:用户“root”的标识身份验证失败
请问有谁可以告诉我出了什么问题,以及我该如何更正我的代码。毕竟root应该有权限执行此操作吧?
我有一个在部署时运行的shell脚本,其中有以下这些行:
# Database
createdb $DBNAME
createuser -D -A $DBNAME
然而,在我的日志中,我遇到了以下错误:
请问有谁可以告诉我出了什么问题,以及我该如何更正我的代码。毕竟root应该有权限执行此操作吧?
如果你想让你的脚本具有可移植性,最好的方法是:
su --login postgres --command "createdb $DBNAME"
使用此方法应该比使用-U
更安全、更可靠、更易携带。我在所有我的PostgreSQL脚本中都是这样做的。你可能会发现它是一种有用的技巧。显然,它仍然需要以root用户身份运行(例如,使用sudo
)。