VoidLinuxで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ブートストラップスクリプトの実行… okブートストラップ後の初期化の実行…ロケール: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”になりましたが、運がありません。

これらは私の情報源です:

https://wiki.voidlinux.eu/PostgreSQL

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

次に何をすべきかわからない。

編集: psqlに遭遇:致命的:ロール「postgres」は存在するpsqlを実行したユーザーに関係なく、同じエラーが発生するため、psql -lを実行できません。

コメント

  • インストールしようとしているPostgresのバージョンと、パッケージを入手した場所を教えてください。エラーメッセージは十分に明確です:role "postgres" does not exist:" postgres "。同じマシンにインストールされているPostgresはこれだけですか? (つまり、正しいインスタンスに接続するのは確実ですか?)そうであれば、問題は、インストールによってどのデータベースロールが設定されるかということです。 ' VoidLinuxまたはXPBSパッケージマネージャーについて詳しく説明するのに十分な知識がありません。 superuser.SEまたはunix.SEに適している可能性があります。
  • バージョンはpostgresql-9.6.10_1です。はい、'は私のシステムにPostgreSQLをインストールする唯一の方法であり、実行中のサーバーのインスタンスは1つだけです。では、質問を移動する必要がありますか? 'わからない…
  • このあたりにVOIDLinuxまたはXPBSの専門家がいるかどうかわからない…重要なのは、の名前を見つけることです。 initdbによって作成されたPostgresロール。次に、同じ名前のOSユーザーに接続して、" trust

認証方法。明らかに" postgres "(これは正しいデフォルトになります)ではありません。

  • 私は同じくらい考えましたが、私は'役割を見つけることができませんでした。質問で述べたように、' psqlをまったく使用できないため、'既存の役割を一覧表示できません。おそらくpostgresql.confファイルに何か関連性が書かれていますか?私が探すべきものは? '役割をgrepし、session_replication_role = 'origin'を取得しました。あまり使用されていないように感じます。
  • :%s/XPBS/XBPS/g
  • 回答

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

    -U username
    --username= username

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

    意味…

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

    2. --username=postgres

    強制できるはずです。

    最初のスーパーユーザーの場合-パッケージがこれらすべてを真剣に台無しにしない限り。

    コメント

    • うわー、これは私を正しい方向に向けました、大丈夫です。 -Uフラグがどこかにあるのを見て、それはここからでした: stackoverflow.com/questions/50746147/ … Laurenz 'の回答を読み間違えた可能性がありますが、initdb -U UTF8 -D /var/lib/postgresql/dataを実行して何を推測しましたか最初のDBスーパーユーザーの役割はでした。とにかく、私は疲れ果ててシステム全体をほとんどクラッシュさせてしまいました。かなり生産的な日。アーウィンの献身に感謝します。あなたの助けに感謝します。
    • @Jakov:-U UTF8。痛い。 -E UTF8を意味していると思いますか?卑劣なスクランブルレターが1通あったために1日を失ってすみません。もう一度:最初に質問で実際のコマンドを示していた場合は、半日節約できた可能性があります…