我是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和重新安装一切?

谢谢你们的帮助!


当前回答

如果你正在使用docker,确保你没有使用POSTGRES_USER=something_else,因为这个变量被标准映像用来知道PostgreSQL管理用户的名称(默认为postgres)。

在我的例子中,我使用这个变量的目的是将另一个用户设置到我的特定数据库,但它最终当然改变了主PostgreSQL用户。

其他回答

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

你可以:

psql

并继续本教程。

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

简要说明:

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

在命令行上运行该命令可以修复它

/Applications/ postgress .app/Contents/Versions/9.4/bin/createdb <Mac OSX Username Here> . exe

在brew安装postgresql和brew服务启动postgresql后,我们有一个名为postgres的数据库。默认情况下,我们可以这样打开psql。

psql postgres

然后我们可以像这样在psql控制台中添加任意名称的用户。

CREATE USER postgres

如果我们想要一个超级用户,我们可以在最后加上SUPERUSER。

通过homebrew安装了新的mac (M1)和最新的postgres(14.0),没有什么对我的这个主题有帮助,但我只是重新安装了postgres,它帮助了我:

brew services stop postgresql
rm -rf /opt/homebrew/var/postgres/*
brew reinstall postgresql
initdb --locale=C -E UTF-8 /opt/homebrew/var/postgres
brew services restart postgresql

所以,这是一个奇迹之类的……

然后:

psql -d postgres

这篇文章帮助我解决了psql: FATAL: role“postgres”不存在的问题。

我使用的是mac,所以我在终端输入了这个命令:

创建用户 -s postgres

这对我很有效。