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 "(これは正しいデフォルトになります)ではありません。
session_replication_role = 'origin'
を取得しました。あまり使用されていないように感じます。:%s/XPBS/XBPS/g
回答
完全な回答ではありませんが、 initdb
に関するマニュアルを検討してください:
-U
username
--username=
username
データベーススーパーユーザーのユーザー名を選択します。これは、デフォルトで
initdb
を実行している有効なユーザーの名前になります。スーパーユーザーの名前が何であるかは実際には重要ではありませんが、オペレーティングシステムのユーザーの名前が異なっていても、通常の名前をpostgresのままにすることを選択する場合があります。
意味…
-
OSユーザーとして
initdb
を実行する場合postgres
、最初のDBスーパーユーザーの役割もpostgres
です-標準のPostgresでは。このルールを曲げるシステムについて聞いたことがあります… -
--username=postgres
を強制できるはずです。
最初のスーパーユーザーの場合-パッケージがこれらすべてを真剣に台無しにしない限り。
コメント
- うわー、これは私を正しい方向に向けました、大丈夫です。
-U
フラグがどこかにあるのを見て、それはここからでした: stackoverflow.com/questions/50746147/ … Laurenz 'の回答を読み間違えた可能性がありますが、initdb -U UTF8 -D /var/lib/postgresql/data
を実行して何を推測しましたか最初のDBスーパーユーザーの役割はでした。とにかく、私は疲れ果ててシステム全体をほとんどクラッシュさせてしまいました。かなり生産的な日。アーウィンの献身に感謝します。あなたの助けに感謝します。 - @Jakov:
-U UTF8
。痛い。-E UTF8
を意味していると思いますか?卑劣なスクランブルレターが1通あったために1日を失ってすみません。もう一度:最初に質問で実際のコマンドを示していた場合は、半日節約できた可能性があります…
role "postgres" does not exist
:" postgres "。同じマシンにインストールされているPostgresはこれだけですか? (つまり、正しいインスタンスに接続するのは確実ですか?)そうであれば、問題は、インストールによってどのデータベースロールが設定されるかということです。 ' VoidLinuxまたはXPBSパッケージマネージャーについて詳しく説明するのに十分な知識がありません。 superuser.SEまたはunix.SEに適している可能性があります。initdb
によって作成されたPostgresロール。次に、同じ名前のOSユーザーに接続して、" trust