psql:致命:角色“postgres”不存在

Jak*_*kov 6 postgresql linux installation

在 Void Linux 上运行 PostgreSQL 服务器。安装后initdb以操作系统用户“postgres”的身份运行:

[user@host]$ sudo -u postgres -i

$ initdb -D '/var/lib/postgresql/data'
Run Code Online (Sandbox Code Playgroud)

接收输出:

创建目录 /var/lib/postgresql/data ... ok 创建子目录 ... ok 选择默认 max_connections ... 100 选择默认 shared_buffers ... 128MB 选择动态共享内存实现 ... posix 创建配置文件 ... ok正在运行引导脚本... ok 执行 post-bootstrap 初始化 ... 语言环境:无法将 LC_MESSAGES 设置为默认语言环境:没有这样的文件或目录 ok 正在将数据同步到磁盘 ... 好的

警告:为本地连接启用“信任”身份验证您可以在下次运行 initdb 时通过编辑 pg_hba.conf 或使用选项 -A 或 --auth-local 和 --auth-host 来更改此设置。

成功。您现在可以使用以下命令启动数据库服务器: pg_ctl -D /var/lib/postgresql/data -l logfile start

然后我继续创建服务,将所有权授予“postgres”并启动它:

[user@host]$ ln -s /etc/sv/postgresql /var/service
[user@host]$ sudo chown postgres: /var/service/postgresql
[user@host]$ sudo sv start postgresql
[user@host]$ ls -l /var/service/postgresql
lrwxrwxrwx 1 postgres postgres 18 nov   2 17:05 /var/service/postgresql -> /etc/sv/postgresql
Run Code Online (Sandbox Code Playgroud)

跑步:

[user@host]$ sudo -u postgres psql ...
Run Code Online (Sandbox Code Playgroud)

会给我以下错误:

psql: FATAL:  role "postgres" does not exist
Run Code Online (Sandbox Code Playgroud)

我试过授予/etc/sv/postgresql'postgres'的所有权,但没有运气。

这些是我的来源:

https://wiki.voidlinux.eu/PostgreSQL

PostgreSQL 错误:致命:角色“用户名”不存在

我不知道接下来要做什么。

编辑:偶然发现psql: FATAL: role “postgres” does not exist。无法运行,psql -l因为无论我psql以哪个用户身份运行,我都会遇到相同的错误。

Erw*_*ter 7

不是完整的答案,但请考虑此处的手册initdb

-Uusername
--username=username

选择数据库超级用户的用户名。这默认为正在运行的有效用户的名称initdb。超级用户的名字是什么实际上并不重要,但可以选择保留惯用的名称 postgres,即使操作系统用户的名称不同。

意义 ...

  1. initdb作为 OS user运行时postgres,初始数据库超级用户角色postgres也是 - 在标准 Postgres 中。我听说过系统违反了这条规则......

  2. 你应该能够迫使postgres--username=postgres初始超级用户-除非你的包严重这一切搞砸。