2

OS X El Capitan バージョン 10.11.3 で作業しています。Postgres アプリをダウンロードして実行しました。

上部の象のアイコンにはバージョン 9.6.1.0(9.6.1.0) と表示されます

「Open psql」をクリックすると、端末に次の出力が表示されます。

$ '/Applications/Postgres.app/Contents/Versions/9.6/bin'/psql -p5432
psql: FATAL:  role <username> does not exist

私のユーザー名はどこですか. 私が理解している限り、アプリはユーザー名とパスワードなしでロールを作成する必要があります。

私はやってみました:

psql -h localhost -U <username>

同じエラーが発生しました。

以下は、SOに投稿された回答を試すために得たさまざまな出力です。

$ which psql
/Applications/Postgres.app/Contents/Versions/latest/bin/psql

もう少し検索した後、次のコマンドを実行しました。

psql -h localhost -U postgres
postgres=# 

postgres シェルが開きました。誰が何が起こっているのか説明できますか?

4

1 に答える 1

1

ユーザー名を指定せずに psql を起動すると ( -U ...)、現在の OS ユーザーと同じ名前の db ユーザーでログインしようとします。明らかに、その DB ユーザーはまだ作成されていません。

すべての DB クラスターで作成されるデフォルトのスーパーユーザーの名前はpostgres. postgresこれを、RDBMS の名前または他の用途で名前が付けられたシステム DB と混同しないでください。

ユーザーでログインできpostgres、PW がないという事実は、次の 2 つのことを示しています。

  1. ユーザー `postgres が存在します (duh)。
  2. .pgpassファイルを使用するか、いずれかpg_hba.confの認証方法を使用peerして、パスワードなしでアクセスできるように設定されています。最も可能性が高い。identtrustpeer

その場合、シェルからの簡単な修正として:

createuser -h localhost -U postgres vimarshchaturvedi

vimarshchaturvedi明らかにあなたのOSユーザー名です。

ログインしたら、どのログイン ロール(= ユーザー) が終了するかを確認できます。

SELECT rolname FROM pg_roles;
于 2016-11-18T05:33:42.323 に答える