无法创建用户postgres:角色"postgres"不存在。

11
我正在使用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,然后再次尝试运行createuser -s -r postgres,但又得到这个错误:createuser: could not connect to database postgres: FATAL: role "postgres" does not exist。当我运行psql -d dbname时也出现相同的错误。这像一个循环,我无法创建postgres角色,因为该角色不存在。我该如何解决?PostgreSQL版本似乎是9.1.x,Ubuntu版本是12.10。

sudo pg_lsclusters 的输出是什么? - A.H.
@A.H. 命令 pg_lsclusters 未找到。它要求我安装 postgresql-common 包。我尝试以 root 用户身份执行,但出现了错误。我尝试删除 postgres-xc,但出现了 dpkg: error processing postgres-xc (--remove): 错误,然后退出。 - Kaushik Thirthappa
2个回答

9
原来我在我的机器上安装了postgres-xcpostgresql。 我不得不完全删除postgres-xc,但这有点困难,因为总是出现错误--purge remove postgres-xc并且无法继续卸载。
似乎存在某种打包错误。(详情请见launchpad上的详细信息)。
最终,我最终采用此方法使其正常工作。
之后,我卸载了postgresql并重新安装以使其正常工作。

我曾经遇到过类似的问题。在卸载postgresql时,请确保停止所有postgres进程,删除unix用户“postgres”,并删除“/var/run/postgresql”中的锁定文件。 - Sergey Orshanskiy
@SergeyOrshanskiy 谢谢。我记得最终是通过做你说的事情解决了这个问题。 :) - Kaushik Thirthappa
1
postgres-xc 显然也搞乱了我的 postgres 设置。同样的修复方法对我也起作用! - Dan Burton

1

阅读postgresql教程,无论是Ubuntu还是其他Linux都可以。

编辑 在进行新安装之前创建角色或任何其他操作之前,您需要创建数据库集群:您已经创建了吗?

initdb -D /usr/local/pgsql/data

你需要以用户postgres登录Linux机器。这里有更多信息。

是的,我正在按照步骤操作,但是我无法创建用户。角色“postgres”不存在以创建角色“postgres”。这让我感到困惑。你有什么想法吗? - Kaushik Thirthappa
@Ladislav:Debian(因此也包括Ubuntu)有自定义的脚本和约定来管理PostgreSQL数据库和集群。使用普通的PG命令会带来更多的伤害,而不是好处。特别是对于非专家用户来说。 - A.H.
@A.H. 不了解 Debian 和 Ubuntu,我使用 Slackware。使用 initdb 不会损坏您的安装,它是用于创建数据库集群的。它将在 /usr/local/pgsql/data 中创建文件,如果出现问题,您可以将其删除并重新开始。 - 1ac0
问题:这个新数据库可能在重新启动后无法被识别。并且同时存在多个数据库版本也行不通。多个集群也不行。等等。如果有任何问题,您是否想通过聊天来解决混乱? - A.H.
@A.H.我很愿意聊天并寻求帮助! - Kaushik Thirthappa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接