PostgreSQL 错误:致命:角色"username"不存在



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

Fatal: role h9uest does not exist

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

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

sudo -u postgres -i

按照此处或此处的建议。

然后重试。以系统用户身份操作完成后键入exit postgres

或者执行单个命令createuser postgressudo,如在另一个答案中。

关键是使用与同名数据库角色匹配的操作系统用户,以通过ident身份验证授予访问权限。 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

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

要为您的个人用户帐户创建超级用户角色和数据库,请执行以下操作:

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

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

对于版本 Postgres 9.5,请使用以下代码:

psql -h localhost -U postgres

希望这会有所帮助。

工作方法,

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

  4. 现在试试,psql -U postgres

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

healthcheck:
  test: ['CMD-SHELL', 'pg_isready']
  interval: 5s
  timeout: 5s
  retries: 5

如果您还更改了用户:

healthcheck:
  test: ['CMD-SHELL', 'pg_isready -U postgres'] # <<<---
  interval: 5s
  timeout: 5s
  retries: 5

对于Windows用户:psql -U postgres

然后你应该看到PostgreSQL的命令行界面:postgres=#

在本地用户提示符(不是 root 用户提示符)中,键入

sudo -u postgres createuser <local username>

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

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

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

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

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

在我的情况下,手动创建数据库集群解决了这个问题。

出于某种原因,当我安装 postgres 时,没有创建"初始数据库"。执行initdb为我做了一个技巧。

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

初始化数据库

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

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

这绝对适合您。

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

例如

转储 - 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

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

按照以下步骤操作,它将为您工作:

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

按照以下步骤使帖子正常工作。

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

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

相关内容

  • 没有找到相关文章

最新更新