一尘不染

Postgres中createdb的问题

sql

我必须使用分布在不同机器上且都在运行linux的几个postgresql数据库进行模拟。

我已经成功地从源代码编译并构建了postgresql,我也可以运行服务器,但是当我尝试使用此命令创建新的数据库时:

./postgresql/bin/createdb db1

我收到此错误:

createdb: could not connect to database postgres: FATAL:  role "giulio" does not exist

其中giulio是我用于访问所有计算机的用户名。

在某些机器上它可以工作,而在其他机器上则不能。我真的无法弄清楚问题的根源。我想这与postgres的访问控制有关。

我在Google上做了几项研究,但未能找到并解决问题。

有人知道如何进行这项工作吗?

谢谢,

-朱利奥


阅读 146

收藏
2021-03-10

共1个答案

一尘不染

我假设在已经知道用户“
giulio”的计算机上,您initdb正是以该用户身份执行的,因此使他成为数据库超级用户。引用inidb(1)(强调我的):

--username =用户名选择数据库超级用户的用户名。 默认为运行initdb的有效用户的名称。
超级用户名到底是什么并不重要,但是即使操作系统的用户名不同,也可以选择保留惯用名称 postgres

在其他机器上,我假设您确实initdb与其他用户一起执行,希望使用postgres

为了恢复到标准状态,我建议删除“ giulio”为超级用户的计算机上的数据库集群,并使用标准postgres用户设置新的数据库集群。然后添加另一个用户“
giulio”。由于某些脚本/程序希望使用名为的超级用户帐户,因此可以避免日后的混乱postgres

2021-03-10