Sql postgres中createdb的问题

Sql postgres中createdb的问题,sql,postgresql,role,Sql,Postgresql,Role,我必须对分布在不同机器上的几个postgresql数据库进行模拟,它们都运行linux 我成功地从源代码编译并构建了postgresql,我还可以运行服务器,但当我尝试使用此命令创建新数据库时: ./postgresql/bin/createdb db1 我得到这个错误: createdb: could not connect to database postgres: FATAL: role "giulio" does not exist 其中giulio是我访问所有机器的用户名 在某些

我必须对分布在不同机器上的几个postgresql数据库进行模拟,它们都运行linux

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

./postgresql/bin/createdb db1
我得到这个错误:

createdb: could not connect to database postgres: FATAL:  role "giulio" does not exist
其中giulio是我访问所有机器的用户名

在某些机器上它工作,而在另一台机器上它不工作。我实在想不出问题的根源。我想这与博士后的访问控制有关

我在谷歌上做了几次研究,但都没能找到并解决这个问题

有人知道如何得到这份工作吗

谢谢


-Giulio

PostgreSQL有自己的用户和角色,这些用户和角色与您的操作系统的用户和角色不同。通常有一个专门的超级用户,postgres。有关用户管理信息,请参见此处:

在执行postgres命令时,需要使用-U标志指定用户(除非您已经以现有db用户身份登录)。调用createdb脚本时,由于没有使用-U标志,服务器假定应该使用调用方的uid(giulo),但没有向db添加用户“giulio”,因此出现错误消息

因此,按如下方式执行命令:


./postgresql/bin/createdb-U postgres db1


它应该会起作用。随后,您可能希望在数据库中创建其他用户和角色,而不是以超级用户的身份执行所有操作。

PostgreSQL有自己的用户和角色,这些用户和角色与您的操作系统的用户和角色是分开的。通常有一个专门的超级用户,postgres。有关用户管理信息,请参见此处:

在执行postgres命令时,需要使用-U标志指定用户(除非您已经以现有db用户身份登录)。调用createdb脚本时,由于没有使用-U标志,服务器假定应该使用调用方的uid(giulo),但没有向db添加用户“giulio”,因此出现错误消息

因此,按如下方式执行命令:


./postgresql/bin/createdb-U postgres db1


它应该会起作用。然后,稍后,您可能希望在数据库中创建其他用户和角色,而不是以超级用户的身份执行所有操作。

我假设,在已知用户“giulio”的机器上,您执行了
initdb
,而正是该用户使他成为了数据库超级用户。来自inidb(1)(我的重点)的引用:

--用户名=用户名 选择数据库超级用户的用户名这是默认值 运行initdb的有效用户的名称。这确实是 超级用户的名字并不重要,但可以选择 即使操作系统 tem用户名不同

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


为了回到标准轨道上,我建议您删除机器上的数据库集群,其中“giulio”是超级用户,并使用标准
postgres
用户设置一个新的数据库集群。然后添加另一个用户“giulio”。这将避免更多的混乱,因为一些脚本/程序期望一个名为
postgres

的超级用户帐户,我假设在用户“giulio”已知的机器上,您执行了
initdb
,而正是这个用户使他成为DB超级用户。来自inidb(1)(我的重点)的引用:

--用户名=用户名 选择数据库超级用户的用户名这是默认值 运行initdb的有效用户的名称。这确实是 超级用户的名字并不重要,但可以选择 即使操作系统 tem用户名不同

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


为了回到标准轨道上,我建议您删除机器上的数据库集群,其中“giulio”是超级用户,并使用标准
postgres
用户设置一个新的数据库集群。然后添加另一个用户“giulio”。这将避免更多的混乱,因为一些脚本/程序希望有一个名为
postgres

的超级用户帐户。我的答案更简单……我意识到我需要运行以下程序:

brew install postgresql
然后,为了检查它是否有效,我运行了:

which createdb 

检查文件路径,以及它是否工作,并且它有!希望这有帮助

我的答案更简单……我意识到我只需要运行以下程序:

brew install postgresql
然后,为了检查它是否有效,我运行了:

which createdb 
检查文件路径,以及它是否工作,并且它有!希望这有帮助