我在启动时从monit运行bash文件,该bash文件启动了我的postgres服务器。
如果我的数据库目录不存在,我会这样做:
1- initdb(postgresql / data /) su - edge -c' / usr / bin / initdb -D $ {DBDIR}'
2-复制修改后的pg_hba.conf和postgresql.conf文件到(postgresql / data /)
3-启动我的服务器 su - edge -c" / usr / bin / pg_ctl -w -D $ {DBDIR} -l logfile start"
4- postgres createuser - su - $ User -c' $ {DBDIR} -e -s postgres'
执行bash文件后 postgresql / data /已创建 文件被复制 服务器启动, 但是没有创建用户,因此我无法访问我的数据库
错误:/ usr / bin / psql -U postgres psql:致命:角色" postgres"不存在
答案 0 :(得分:1)
我无法破译您的步骤#4,但postgres
角色不存在的原因是因为步骤#1由用户edge
运行和< / strong>它没有要求通过postgres
创建-U
角色,因此它会以超级用户身份创建egde
角色。
Per initdb
文档:
-U username
--username =用户名选择数据库超级用户的用户名。此默认为运行initdb的有效用户的名称。实际上并非如此 重要的是超级用户的名字,但有人可能会选择保留 习惯名称postgres,即使操作系统用户的名字 是不同的。
执行initdb -U postgres
,或者如果您更喜欢名为edge
的超级用户,请保持这样,但使用psql
启动psql -U edge
,或设置PGUSER
环境变量为edge
,以避免每次都输入。