psql:致命:角色“postgres”不存在
在 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
我不知道下一步該做什麼。
編輯:偶然發現psql: FATAL: 角色“postgres”不存在。無法執行
psql -l
,因為無論我以哪個使用者身份執行,我都會遇到相同的錯誤psql
。
-U
username
--username=
username
選擇數據庫超級使用者的使用者名。這預設為執行的有效使用者的名稱
initdb
。超級使用者的名字是什麼實際上並不重要,但是人們可能會選擇保留習慣名稱 postgres,即使作業系統使用者的名字不同。意義 …
- 當
initdb
以 OS 使用者身份執行時postgres
,初始 DB 超級使用者角色也是postgres
標準 Postgres 中的角色。我聽說過系統違反了這條規則……- 您應該能夠為初始超級使用者強制
postgres
使用該名稱--username=postgres
- 除非您的包嚴重混淆了所有這些。