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
を実行できません。
完全な答えではありませんが、 initdb
に関するマニュアルをここで検討してください :
-U
username
--username=
username
データベースのスーパーユーザーのユーザー名を選択します。これは、デフォルトで
initdb
を実行している有効なユーザーの名前になります。スーパーユーザーの名前が何であるかは重要ではありませんが、たとえオペレーティングシステムのユーザーの名前が異なっていても、慣習的な名前postgresを保持することを選択できます。
意味...
OSユーザーinitdb
としてpostgres
を実行する場合、初期のDBスーパーユーザーロールもpostgres
です-標準のPostgresでは。このルールを曲げるシステムについて聞いたことがあります...
最初のスーパーユーザーの場合、postgres
を--username=postgres
でforceできる(---)ことができるはずです。