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

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

私はPostgres初心者です。

Mac 用の postgres.app をインストールしました。psql コマンドをいじっていたら、誤って postgres データベースを削除してしまいました。何が入っていたのかわかりません。

現在チュートリアルを作成中です:http://www.rosslaird.com/blog/building-a-project-with-mezzanine/

そして私は行き詰まっていますsudo -u postgres psql postgres

エラーメッセージ:psql: FATAL: role "postgres" does not exist

$ どのpsql

/Applications/Postgres.app/Contents/MacOS/bin/psql

これは印刷されたものですpsql -l

                                List of databases
    Name    |   Owner    | Encoding | Collate | Ctype |     Access privileges     
------------+------------+----------+---------+-------+---------------------------
 user       | user       | UTF8     | en_US   | en_US | 
 template0  | user       | UTF8     | en_US   | en_US | =c/user                  +
            |            |          |         |       | user      =CTc/user      
 template1  | user       | UTF8     | en_US   | en_US | =c/user                  +
            |            |          |         |       | user      =CTc/user      
(3 rows)

では、どのような手順を踏めばよいでしょうか? psql に関連するものをすべて削除して、すべてを再インストールすればよいのでしょうか?

助けてくれてありがとう!

ベストアンサー1

注意: homebrew を使用して postgres をインストールした場合は、以下の @user3402754 と @originalhat のコメントを参照してください。

エラー メッセージは、データベースが見つからないことではなく、ロールが見つからないことを示していることに注意してください。ログイン プロセスの後半で、データベースが見つからないという問題が発生する可能性もあります。

psqlしかし、最初のステップは、不足しているロールを確認することです。コマンドの出力は何ですか\du? 私の Ubuntu システムでは、関連する行は次のようになります。

                              List of roles
 Role name |            Attributes             | Member of 
-----------+-----------------------------------+-----------
 postgres  | Superuser, Create role, Create DB | {}        

を持つロールが少なくとも 1 つない場合はsuperuser、問題が発生します :-)

もしあれば、それを使ってログインできます。コマンドの出力を見ると、 とデータベース\lの権限は、Ubuntu システムのスーパーユーザー と同じです。したがって、セットアップではスーパーユーザー を単純に使用していると思います。したがって、次のコマンドを使ってログインできます。usertemplate0template1postgresuser

sudo -u user psql user

user実際に DB スーパーユーザーである場合は、別の DB スーパーユーザーと、そのユーザー用のプライベートの空のデータベースを作成できます。

CREATE USER postgres SUPERUSER;
CREATE DATABASE postgres WITH OWNER postgres;

しかし、postgres.app のセットアップではこれが行われていないようなので、これも行わないでください。チュートリアルを簡単に適応してください。

おすすめ記事