578

私は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

$ which 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 に関連するすべてを削除し、すべてを再インストールしますか?

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

4

26 に答える 26

563

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

エラー メッセージはデータベースの欠落についてではなく、ロールの欠落について述べていることに注意してください。ログイン プロセスの後半で、欠落しているデータベースに遭遇することもあります。

しかし、最初のステップは不足している役割を確認することです: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

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

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

しかし、あなたの postgres.app セットアップはこれを行っていないように見えるので、そうすべきではありません。チュートリアルを簡単に適応させます。

于 2013-03-09T10:13:04.797 に答える
45

Brew から postgres をインストールした場合は、ターミナルでこれを実行します。

/usr/local/opt/postgres/bin/createuser -s postgres
于 2020-08-10T12:50:37.820 に答える
21

まず、ユーザーを作成する必要があります。

sudo -u postgres createuser --superuser $USER

データベースを作成した後:

sudo -u postgres createdb $USER

$USERシステムのユーザー名に変更します。

ここで完全なソリューションを見ることができます。

于 2015-07-29T22:54:07.147 に答える
18

私にとって、このコードは機能しました:

/Applications/Postgres.app/Contents/Versions/9.4/bin/createuser -s postgres

ここから来ました: http://talk.growstuff.org/t/fatal-role-postgres-does-not-exist/216/4

于 2015-05-06T20:09:37.357 に答える
9

コマンドラインでこれを実行すると修正されるはずです

/Applications/Postgres.app/Contents/Versions/9.4/bin/createdb <Mac OSX Username Here>

于 2015-02-13T21:41:52.393 に答える
5

これは私のためにそれを修正した唯一のものです:

createuser -s -U $USER
于 2016-03-02T00:10:20.950 に答える
4

データベースを削除postgresしても問題ありません。このデータベースは最初は空であり、その目的は単純に、postgres必要な場合にユーザーが接続するための一種の「ホーム」を持つことです。

それでも、SQLコマンドで再作成できますCREATE DATABASE postgres;

質問に記載されているチュートリアルはpostgres.app、念頭に置いて書かれていないことに注意してください。一般に、Unix 用の PostgreSQL とは対照的に、通常のユーザーとは異なる権限を持つpostgres.app専用ユーザーによって実行されるサービスとは対照的に、通常のアプリケーションのように見えます。あなた自身のアカウントで運営・管理されています。postgrespostgres.app

したがって、このコマンド: の代わりにsudo -u postgres psql -U postgres、 postgres.app の精神に沿って、単に発行:psqlを実行すると、ユーザーの名前に一致するデータベースに自動的に接続され、たまたまスーパーユーザーである同じ名前の db アカウントが使用されます。権限に関しては何でもできます。

于 2013-03-08T20:53:25.320 に答える
2

Docker コンテナを実行した直後にこの問題が発生した場合は、コンテナを破棄して再作成してみてください。それは私のためにそれを解決しました:

docker-compose down
docker-compose up --force-recreate

postgresuserこれにより、デフォルトのユーザーとしてデータベースを再作成する必要があります

于 2021-10-27T07:16:12.157 に答える
2

新しいMac(M1)と最新のpostgres(14.0)が自作でインストールされているため、このトピックからは何も役に立ちませんでしたが、postgresを再インストールしたところ、役に立ちました:

brew services stop postgresql
rm -rf /opt/homebrew/var/postgres/*
brew reinstall postgresql
initdb --locale=C -E UTF-8 /opt/homebrew/var/postgres
brew services restart postgresql

だから、奇跡というか…。

それからちょうど:

psql -d postgres
于 2021-11-05T08:37:59.990 に答える
1

psql -l はデータベースのリストを返すため、ここでは sudo は必要ないと思います。これは、initdb が postgres ユーザーの下ではなく、ユーザーの現在のユーザーの下で実行されたことを示しています。

次のことができます。

psql

そしてチュートリアルを続けます。

多くのアプリケーションはこれが存在することを期待する可能性があるため、postgres ユーザーとデータベースを作成する AH の一般的なポイントをお勧めします。

簡単な説明:

PostgreSQL は、オペレーティング システムへの管理アクセスでは実行されません。代わりに、通常のユーザーで実行され、ピア認証 (接続しようとしている OS に尋ねる) をサポートするために、初期化プロセスを実行するユーザーでユーザーとデータベースを作成します。この場合、それは通常のユーザーでした。

于 2013-03-09T14:36:59.037 に答える