PostgreSQL error: Fatal: role “username” does not exist
我正在设置我的PostgreSQL 9.1。我对PostgreSQL不能做任何事情:不能
1 | Fatal: ROLE h9uest does NOT exist |
使用操作系统用户
1 | sudo -u postgres -i |
按照这里或这里的建议。
然后再试一次。当以系统用户身份进行操作时,键入
或者用
重点是使用与同一名称的数据库角色匹配的操作系统用户,通过
In order to bootstrap the database system, a freshly initialized
system always contains one predefined role. This role is always a
"superuser", and by default (unless altered when runninginitdb ) it
will have the same name as the operating system user that initialized
the database cluster. Customarily, this role will be namedpostgres .
In order to create more roles you first have to connect as this
initial role.
我听说过使用非标准用户名或操作系统用户不存在的奇怪设置。你需要调整你的策略。
阅读手册中有关数据库角色和客户端身份验证的内容。
在尝试了许多其他人的解决方案后,没有成功,这个答案最终帮助了我。
https://stackoverflow.com/a/16974197/2433309
简而言之,跑步
1 | sudo -u postgres createuser owning_user |
创建一个名称为owning_user的角色(在本例中为h9uest)。之后,您可以在终端上以您设置的任何帐户名运行
1 2 3 | sudo su - postgres psql template1 |
在具有"超级用户"权限的pgsql上创建角色
1 2 | CREATE ROLE username superuser; eg. CREATE ROLE demo superuser; |
然后创建用户
1 2 | CREATE USER username; eg. CREATE USER demo; |
为用户分配权限
1 | GRANT ROOT TO username; |
然后启用该用户的登录,可以从正常的
1 | ALTER ROLE username WITH LOGIN; |
使用
要为您的个人用户帐户创建超级用户角色和数据库,请执行以下操作:
这对我很有用:
1 | psql -h localhost -U postgres |
工作方法
重启,
现在试试看,
我在MacOS上安装了它,必须:
1 2 3 | cd /Applications/Postgres.app/Contents/Versions/9.5/bin createuser -U postgres -s YOURUSERNAME createdb YOURUSERNAME |
资料来源:https://github.com/postgresapp/postgresapp/issues/313 issuecomment-192461641
在本地用户提示中,而不是根用户提示中,键入
1 | sudo -u postgres createuser <LOCAL username> |
然后输入本地用户的密码。
然后输入上一个生成"角色'username'不存在"的命令。
以上步骤为我解决了这个问题。如果没有,请发送上述步骤的终端消息。
对于Postgres 9.5版本,请使用以下命令:
1 | psql -h localhost -U postgres |
希望这会有所帮助。
手动创建一个DB集群解决了我的问题。
出于某种原因,当我安装Postgres时,没有创建"初始数据库"。处决埃多克斯一〔23〕对我有好处。
此解决方案在PostgreSQL wiki中提供-第一步:
initdb
Typically installing postgres to your OS creates an"initial DB" and starts the postgres server daemon running. If not then you'll need to run initdb
遵循这些步骤,它将为您工作:
1 2 3 4 | psql postgres postgres=# CREATE ROLE username superuser; postgres=# ALTER ROLE username WITH LOGIN; |
对于Windows用户:
您应该看到PostgreSQL的命令行接口:
卸载所有内容并保留postgres.app:
1 2 3 4 5 6 | brew cask uninstall postgres brew uninstall postgres brew cask install postgres rm -rf /Applications/Postgres93.app/ # shutdown any postgres instance # OPEN postgres.app ->"Initialize" |
我想要PostgreSQL 9.6