在启动期间创建postgres用户

时间:2017-03-27 18:26:09

标签: linux postgresql monit

我在启动时从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"不存在

1 个答案:

答案 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,以避免每次都输入。