我必须使用分布在不同机器上且都在运行linux的几个postgresql数据库进行模拟。
我已经成功地从源代码编译并构建了postgresql,我也可以运行服务器,但是当我尝试使用此命令创建新的数据库时:
./postgresql/bin/createdb db1
我收到此错误:
createdb: could not connect to database postgres: FATAL: role "giulio" does not exist
其中giulio是我用于访问所有计算机的用户名。
在某些机器上它可以工作,而在其他机器上则不能。我真的无法弄清楚问题的根源。我想这与postgres的访问控制有关。
我在Google上做了几项研究,但未能找到并解决问题。
有人知道如何进行这项工作吗?
谢谢,
-朱利奥
我假设在已经知道用户“ giulio”的计算机上,您initdb正是以该用户身份执行的,因此使他成为数据库超级用户。引用inidb(1)(强调我的):
initdb
inidb(1)
--username =用户名选择数据库超级用户的用户名。 默认为运行initdb的有效用户的名称。 超级用户名到底是什么并不重要,但是即使操作系统的用户名不同,也可以选择保留惯用名称 postgres 。
在其他机器上,我假设您确实initdb与其他用户一起执行,希望使用postgres。
postgres
为了恢复到标准状态,我建议删除“ giulio”为超级用户的计算机上的数据库集群,并使用标准postgres用户设置新的数据库集群。然后添加另一个用户“ giulio”。由于某些脚本/程序希望使用名为的超级用户帐户,因此可以避免日后的混乱postgres。