Postgresql

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

  • November 2, 2018

在 Void Linux 上執行 PostgreSQL 伺服器。安裝後initdb以作業系統使用者“postgres”身份執行:

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

$ initdb -D '/var/lib/postgresql/data'

收到的輸出:

創建目錄 /var/lib/postgresql/data … ok 創建子目錄 … ok 選擇預設 max_connections … 100 選擇預設 shared_buffers … 128MB 選擇動態共享記憶體實現 … posix 創建配置文件 … ok正在執行引導腳本…可以執行引導後初始化…區域設置:無法將 LC_MESSAGES 設置為預設區域設置:沒有這樣的文件或目錄可以將數據同步到磁碟…可以

警告:為本地連接啟用“信任”身份驗證您可以在下次執行 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

跑步:

[user@host]$ sudo -u postgres psql ...

會給我以下錯誤:

psql: FATAL:  role "postgres" does not exist

我試過授予/etc/sv/postgresql‘postgres’的所有權,但沒有運氣。

這些是我的消息來源:

https://wiki.voidlinux.eu/PostgreSQL

PostgreSQL 錯誤:致命:角色“使用者名”不存在

我不知道下一步該做什麼。

編輯:偶然發現psql: FATAL: 角色“postgres”不存在。無法執行psql -l,因為無論我以哪個使用者身份執行,我都會遇到相同的錯誤psql

不是完整的答案,但請考慮此處的手冊initdb

-Uusername

--username=username

選擇數據庫超級使用者的使用者名。這預設為執行的有效使用者的名稱initdb。超級使用者的名字是什麼實際上並不重要,但是人們可能會選擇保留習慣名稱 postgres,即使作業系統使用者的名字不同。

意義 …

  1. initdb以 OS 使用者身份執行時postgres,初始 DB 超級使用者角色也是postgres標準 Postgres 中的角色。我聽說過系統違反了這條規則……
  2. 您應該能夠為初始超級使用者強制postgres使用該名稱--username=postgres- 除非您的包嚴重混淆了所有這些。

引用自:https://dba.stackexchange.com/questions/221663