web-dev-qa-db-ja.com

psql:致命的:ロール「postgres」が存在しません

Void Linux上でPostgreSQLサーバーを実行しています。インストール後、OSユーザー 'postgres'としてinitdbを実行しました:

[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実行中bootstrapスクリプト...ブートストラップ後の初期化を実行しています...ロケール:LC_MESSAGESをデフォルトのロケールに設定できません:そのようなファイルまたはディレクトリはありませんokデータをディスクに同期しています... ok

警告:ローカル接続の「信頼」認証を有効にするpg_hba.confを編集するか、オプション-A、または--auth-localと--auth-Hostを使用して、次にinitdbを実行するときに、これを変更できます。

成功しました。これで、データベースサーバーを起動できます。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

「postgres」に/etc/sv/postgresqlの所有権を付与しようとしましたが、うまくいきませんでした。

これらは私の情報源でした:

https://wiki.voidlinux.eu/PostgreSQL

PostgreSQLエラー:致命的:ロール「ユーザー名」が存在しません

次に何をしたらよいかわかりません。

編集:つまずいた psql:FATAL:ロール「postgres」が存在しないpsqlをどのユーザーとして実行しても、同じエラーが発生するため、psql -lを実行できません。

4
Jakov

完全な答えではありませんが、 initdbに関するマニュアルをここで検討してください

-Uusername
--username=username

データベースのスーパーユーザーのユーザー名を選択します。これは、デフォルトでinitdbを実行している有効なユーザーの名前になります。スーパーユーザーの名前が何であるかは重要ではありませんが、たとえオペレーティングシステムのユーザーの名前が異なっていても、慣習的な名前postgresを保持することを選択できます。

意味...

  1. OSユーザーinitdbとしてpostgresを実行する場合、初期のDBスーパーユーザーロールもpostgresです-標準のPostgresでは。このルールを曲げるシステムについて聞いたことがあります...

  2. 最初のスーパーユーザーの場合、postgres--username=postgresforceできる(---)ことができるはずです。

4