918

PostgreSQL9.1をセットアップしています。PostgreSQLでは何もできません:できませんcreatedb、できませんcreateuser; すべての操作でエラーメッセージが返されます

Fatal: role h9uest does not exist

h9uestは私のアカウント名であり、sudo apt-get installこのアカウントではPostgreSQL9.1です。
アカウントでも同様のエラーが発生しrootます。

4

17 に答える 17

952

オペレーティング システム ユーザー を使用してデータベースを作成します -同じ名前のオペレーティング システム ユーザーに対応する必要な権限を持つデータベースpostgresロールを設定していない限り(この場合):h9uest

sudo -u postgres -i

ここまたはここで推奨されているように。

その後、もう一度やり直してください。system exituser としての操作が完了したら入力しますpostgres

または、別の回答のdrees で示されているように、単一のコマンドcreateuserをのように実行します。postgressudo

identポイントは、同じ名前のデータベース ロールに一致するオペレーティング システム ユーザーを使用して、認証を介してアクセスを許可することです。postgresデータベース クラスタを初期化したデフォルトのオペレーティング システム ユーザです。マニュアル:

データベース システムをブートストラップするために、新たに初期化されたシステムには常に 1 つの定義済みロールが含まれています。このロールは常に「スーパーユーザー」であり、デフォルトでは (実行時に変更されない限りinitdb)、データベース クラスターを初期化したオペレーティング システム ユーザーと同じ名前になります。通常、このロールは という名前になりますpostgres。さらにロールを作成するには、最初にこの初期ロールとして接続する必要があります。

非標準のユーザー名を使用した、またはオペレーティング システムのユーザーが存在しない奇妙なセットアップについて聞いたことがあります。そこに戦略を適応させる必要があります。

マニュアルでデータベースの役割クライアント認証について読んでください。

于 2012-08-12T04:13:03.503 に答える
326

他の多くの人の解決策を試した後、成功しなかったため、この回答が最終的に役立ちました。

https://stackoverflow.com/a/16974197/2433309

要するにランニング

sudo -u postgres createuser owning_user

owning_user (この場合は h9uest) という名前のロールを作成します。rake db:createその後、Postgres 環境に入る必要なく、設定したアカウント名でターミナルから実行できます。

于 2013-09-09T23:27:33.327 に答える
106

を使用して postgres をインストールしapt-getても、ユーザー ロールまたはデータベースは作成されません。

個人ユーザー アカウント用のスーパーユーザー ロールとデータベースを作成するには、次の手順を実行します。

sudo -u postgres createuser -s $(whoami); createdb $(whoami)

于 2016-07-18T19:01:27.463 に答える
9

Windowsユーザーの場合:psql -U postgres

PostgreSQL へのコマンドライン インターフェイスが表示されます。postgres=#

于 2019-02-08T12:13:28.207 に答える
4

私の場合、DBクラスターを手動で作成すると解決しました。

postgresをインストールしたところ、なぜか「初期DB」が作成されませんでした。実行initdbするとうまくいきました。

このソリューションは、PostgreSQL Wiki - First stepsで提供されています。

initdb

通常、postgres を OS にインストールすると、「初期 DB」が作成され、postgres サーバー デーモンの実行が開始されます。そうでない場合は、initdb を実行する必要があります

于 2018-08-28T19:53:31.730 に答える
2

--no-owner --no-privilegesフラグ付きのダンプと復元

例えば

ごみ -pg_dump --no-owner --no-privileges --format=c --dbname=postgres://userpass:username@postgres:5432/schemaname > /tmp/full.dump

戻す -pg_restore --no-owner --no-privileges --format=c --dbname=postgres://userpass:username@postgres:5432/schemaname /tmp/full.dump

于 2019-07-25T12:29:13.720 に答える
-4

ポートを 5432 から 5433 に変更するだけでうまくいきました。

于 2020-08-12T00:23:19.047 に答える