PostgreSQL错误:致命的:角色“用户名”不存在

我正在设置我的PostgreSQL 9.1。我不能用PostgreSQL做任何事情:不能createdb,不能createuser;所有操作都返回错误消息

Fatal: role h9uest does not exist

h9uest是我的帐户名,我sudo apt-get install PostgreSQL 9.1在这个帐户下。
root帐户仍然存在类似的错误。

1162714 次浏览

使用操作系统用户postgres创建您的数据库-只要您没有设置数据库角色,该角色具有与您的同名操作系统用户相对应的必要权限(在您的情况下为h9uest):

sudo -u postgres -i

建议这里这里

然后再试一次。当以系统用户postgres完成操作时,键入exit

将单个命令createuser作为postgressudo一起执行,就像另一个答案中的由德雷斯证明一样。

关键是使用与同名数据库角色匹配的操作系统用户通过#0认证被授予访问权限。postgres是初始化数据库集群的默认操作系统用户。手册:

为了引导数据库系统,一个新初始化的系统始终包含一个预定义的角色。此角色始终是“超级用户”,默认情况下(除非在运行initdb时更改)它将与初始化的操作系统用户具有相同的名称数据库集群。通常,此角色将被命名为postgres。为了创建更多的角色,您首先必须连接如下初始角色。

我听说过使用非标准用户名或操作系统用户不存在的奇怪设置。您需要在那里调整您的策略。

阅读手册中的数据库角色客户端认证

在尝试了许多其他人的解决方案之后,没有成功,这个答案终于帮助了我。

https://stackoverflow.com/a/16974197/2433309

简而言之,跑步

sudo -u postgres createuser owning_user

创建一个名为owning_user的角色(在本例中为h9uest)。之后,您可以从终端以您设置的任何帐户名称运行rake db:create,而无需进入Postgres环境。

sudo su - postgres
psql template1

在pgsql上创建具有“超级用户”权限的角色

CREATE ROLE username superuser;eg. CREATE ROLE demo superuser;

然后创建用户

CREATE USER username;eg. CREATE USER demo;

为用户分配权限

GRANT ROOT TO username;

然后启用登录该用户,因此您可以运行例如:psql template1,从普通的$终端:

ALTER ROLE username WITH LOGIN;

这对我有用:

psql -h localhost -U postgres

在本地用户提示,而不是root用户提示中,键入

sudo -u postgres createuser <local username>

然后输入本地用户的密码。

然后输入生成“角色'用户名'不存在”的上一条命令。

以上步骤解决了我的问题。如果没有,请发送终端消息进行上述步骤。

使用apt-get安装postgres不会创建用户角色或数据库。

要为您的个人用户帐户创建超级用户角色和数据库:

sudo -u postgres createuser -s $(whoami); createdb $(whoami)

遵循这些步骤,它会为你工作:

  1. 运行msfconsole
  2. 类型db_console
  3. 一些信息将显示给您选择的信息谁告诉你做:db_connect user:pass@host:port.../database对不起,我不记得了,但它就像这一个然后替换用户和密码和主机和数据库中包含的信息database.yml中的位置:/usr/share/metasploit-framework/config
  4. 你会看到。在后台重建模型缓存。
  5. 键入apt-get更新&&apt-get升级更新后重新启动终端和午餐msf控制台,它的工作原理,你可以检查,通过键入msfconsole: msf>db_status,你会看到它的连接。

工作方法,

  1. vi /etc/postgresql/9.3/main/pg_hba.conf
  2. local all postgres peer这里将同行更改为信任
  3. 重新启动,sudo service postgresql restart

  4. 现在试试,psql -U postgres

我在macOS上安装了它,并且必须:

cd /Applications/Postgres.app/Contents/Versions/9.5/bincreateuser -U postgres -s YOURUSERNAMEcreatedb YOURUSERNAME

来源:https://github.com/PostgresApp/PostgresApp/issues/313#issuecomment-192461641

手动创建一个DB集群解决了我的问题。

由于某种原因,当我安装postgres时,没有创建“初始数据库”。执行initdb对我来说很有用。

此解决方案在PostgreSQL Wiki-第一步中提供:

initdb

通常将postgres安装到您的操作系统会创建一个“初始数据库”并启动postgres服务器守护程序运行。如果不是,那么您需要运行initdb

对于版本员额9.5,使用以下命令:

psql -h localhost -U postgres

希望这能有所帮助。

对于windows用户:psql -U postgres

您应该看到PostgreSQL的命令行界面:postgres=#

psql postgres
postgres=# CREATE ROLE username superuser;postgres=# ALTER ROLE username WITH LOGIN;

使用--no-owner --no-privileges标志转储和恢复

e. g.

转储-pg_dump --no-owner --no-privileges --format=c --dbname=postgres://userpass:username@postgres:5432/schemaname > /tmp/full.dump

恢复-pg_restore --no-owner --no-privileges --format=c --dbname=postgres://userpass:username@postgres:5432/schemaname /tmp/full.dump

像将端口从5432更改为5433这样简单的事情对我来说很有效。

按照以下步骤让postgres工作。

  1. 在您的终端中,使用以下命令找到Application Support文件夹。/Users/[用户名]/库/应用程序支持
  2. 删除应用程序,Postgres。
  3. 重新安装应用程序,它应该可以正常工作。

我用docker-compose做了一个健康检查。

healthcheck:test: ['CMD-SHELL', 'pg_isready']interval: 5stimeout: 5sretries: 5

如果您也更改了用户:

healthcheck:test: ['CMD-SHELL', 'pg_isready -U postgres'] # <<<---interval: 5stimeout: 5sretries: 5

对于那些使用docker并正确遵循官方文档说明的人,如果仍然遇到此问题,请重新启动windows并重试。

sudo -u postgres createuser --superuser $USER
sudo -u postgres createdb $USER

这绝对应该为你工作。