我是postgres的新手。

我安装了postgres。我在玩psql命令,我不小心掉了postgres数据库。我不知道里面有什么。

我目前正在制作一个教程:http://www.rosslaird.com/blog/building-a-project-with-mezzanine/

我被困在sudo -u postgres psql postgres

错误信息:psql: FATAL: role "postgres"不存在

$ which PSQL

/Applications/Postgres.app/Contents/MacOS/bin/psql

这是psql -l输出的内容

                                List of databases
    Name    |   Owner    | Encoding | Collate | Ctype |     Access privileges     
------------+------------+----------+---------+-------+---------------------------
 user       | user       | UTF8     | en_US   | en_US | 
 template0  | user       | UTF8     | en_US   | en_US | =c/user                  +
            |            |          |         |       | user      =CTc/user      
 template1  | user       | UTF8     | en_US   | en_US | =c/user                  +
            |            |          |         |       | user      =CTc/user      
(3 rows)

那么我应该采取哪些步骤呢?删除一切相关的psql和重新安装一切?

谢谢你们的帮助!


当前回答

在Ubuntu系统上,我清除了PostgreSQL并重新安装了它。恢复所有数据库。 这为我解决了问题。

建议—为了安全起见,请备份数据库。

其他回答

删除postgres数据库并不重要。这个数据库最初是空的,它的目的只是让postgres用户有一个可以连接的“家”(如果需要的话)。

您仍然可以使用SQL命令CREATE DATABASE postgres重新创建它;

注意,问题中提到的教程不是用postgres编写的。应用程序在脑海中。 与一般用于Unix的PostgreSQL相反,postgres。App试图看起来像一个正常的应用程序,而不是一个由专用的postgres用户运行的服务,该用户拥有与普通用户不同的特权。postgres。应用程序由您自己的帐户运行和管理。

因此,与其这样的命令:sudo -u postgres psql -u postgres,它将更符合postgres的精神。psql,它自动连接到与用户名称匹配的数据库,并使用同名的db帐户(碰巧是超级用户),因此它可以做任何权限方面的事情。

在Ubuntu系统上,我清除了PostgreSQL并重新安装了它。恢复所有数据库。 这为我解决了问题。

建议—为了安全起见,请备份数据库。

我认为这里不需要sudo,因为psql -l返回一个数据库列表。这告诉我initdb是在用户的当前用户下运行的,而不是在postgres用户下运行的。

你可以:

psql

并继续本教程。

我建议A.H创建postgres用户和数据库的一般要点,因为许多应用程序可能希望存在这一点。

简要说明:

PostgreSQL不会在对操作系统的管理访问下运行。相反,它与普通用户一起运行,为了支持对等身份验证(询问操作系统谁正在尝试连接),它创建了一个用户和运行初始化过程的用户的db。在这种情况下,它是您的普通用户。

如果你从Brew安装了postgres,并且使用的是Apple Silicon (M1) mac,在你的终端上运行这个:

/opt/homebrew/opt/postgresql/bin/createuser -s postgres

如果你使用的是Intel (x86) mac,在你的终端上运行这个:

/usr/local/opt/postgres/bin/createuser -s postgres

我今天遇到了类似的问题,实际上我不知道用户名是什么。这里有2件事,如果你在企业和没有系统管理员访问postgres将创建你的企业用户名作为postgres管理用户名。如果你通过Homebrew安装,肯定会发生这种情况。在这种情况下,只需使用brew运行psql服务,并对用户名进行回显

Brew服务启动postgresql

then

echo $ USER

您将看到您的postgres用户名。