无法创建用户 postgres:角色“postgres”不存在

Posted

技术标签:

【中文标题】无法创建用户 postgres:角色“postgres”不存在【英文标题】:unable to create user postgres: role "postgres" does not exists 【发布时间】:2013-03-13 13:45:28 【问题描述】:

我在 ubuntu 12.04 服务器上,我正在尝试安装 postgresql。截至目前,我已成功安装它,但无法配置它。我需要创建一个角色才能继续前进,我在终端中运行了这个命令:

root@hostname: createuser -s -r postgres

它说:

createuser: could not connect to database postgres: FATAL: role "root" does not exist

很好,我做到了:

su - postgres

然后又试了一次

postgres@hostname: createuser -s -r postgres

我得到了错误

createuser: could not connect to database postgres: FATAL: role "postgres" does not exist

当我这样做时,我得到了同样的错误

psql -d dbname

它就像一个循环,我无法创建角色 postgres,因为角色 postgres 尚不存在。

我该如何解决这个问题?

postgres版本好像是9.1.x,ubuntu版本好像是12.10

【问题讨论】:

sudo pg_lsclusters 的输出是什么? @A.H.找不到命令pg_lsclusters。它要求我安装postgresql-common 包。我尝试以 root 用户身份进行操作,但出现错误。它尝试删除 postgres-xcdpkg: error processing postgres-xc (--remove): 然后退出。 【参考方案1】:

原来我已经在我的机器上安装了postgres-xcpostgresql。我不得不完全关闭 postgres-xc。这样做有点困难,因为总是出现错误--purge remove postgres-xc,并且无法继续卸载。

似乎存在某种打包错误。 (details on launchpad)。

最终,我最终使用了this 来让它发挥作用。

之后我卸载了 postgresql 并重新安装以使其正常工作。

【讨论】:

我遇到了类似的问题。卸载postgresql时,一定要停止所有postgres进程,删除unix用户postgres,同时删除/var/run/postgresql中的锁文件。 @SergeyOrshanskiy 谢谢。我记得我最终通过按照你说的做了很多事情来解决。 :) postgres-xc 显然也弄乱了我的 postgres 设置。同样的修复对我有用!【参考方案2】:

阅读postgresql tutorial不管是Ubuntu还是其他Linux。

编辑 在全新安装时创建角色或其他任何内容之前,您需要创建数据库集群:您创建了吗?

initdb -D /usr/local/pgsql/data

您需要在 Linux 机器上以用户 postgres 的身份登录。 Here 是更多信息。

【讨论】:

是的。我正在按照步骤操作,但无法创建用户。角色 postgres 不存在以创建角色 postgres。这就是让我困惑的地方。有什么想法吗? @Ladislav:Debian(因此也包括 Ubuntu)具有用于管理 PostgreSQL 数据库和集群的自定义脚本和约定。使用简单的 PG 命令弊大于利。特别是对于非专家。 @A.H.不了解 debian 和 ubuntu,我正在使用 slackware。使用initdb 不会损害您的安装,它用于创建数据库集群。它将在/usr/local/pgsql/data 中创建文件,如果出现问题,您可以将其删除并从头开始。 问题:这个新数据库可能不会在重新启动时被拾取。并且并行拥有多个数据库版本是行不通的。多个集群将不起作用。等等。如果 anything 不起作用,是否想通过聊天来解决问题? @A.H.i 很想聊天并寻求帮助!

以上是关于无法创建用户 postgres:角色“postgres”不存在的主要内容,如果未能解决你的问题,请参考以下文章

Postgres 不创建角色

无法混合ecto.create,角色'postgres'不存在[重复]

Postgresql 角色无法访问其创建的架构

Createuser:无法连接到数据库 postgres:致命:角色“tom”不存在

Postgres:为不同角色/用户创建的未来表授予对角色/用户的访问权限

Jooq 无法找到 postgres 数据库的驱动程序