PostgreSQL9.1をセットアップしています。PostgreSQLでは何もできません:できませんcreatedb、できませんcreateuser; すべての操作でエラーメッセージが返されます
Fatal: role h9uest does not exist
h9uestは私のアカウント名であり、sudo apt-get installこのアカウントではPostgreSQL9.1です。
アカウントでも同様のエラーが発生しrootます。
PostgreSQL9.1をセットアップしています。PostgreSQLでは何もできません:できませんcreatedb、できませんcreateuser; すべての操作でエラーメッセージが返されます
Fatal: role h9uest does not exist
h9uestは私のアカウント名であり、sudo apt-get installこのアカウントではPostgreSQL9.1です。
アカウントでも同様のエラーが発生しrootます。
オペレーティング システム ユーザー を使用してデータベースを作成します -同じ名前のオペレーティング システム ユーザーに対応する必要な権限を持つデータベースpostgresロールを設定していない限り(この場合):h9uest
sudo -u postgres -i
その後、もう一度やり直してください。system exituser としての操作が完了したら入力しますpostgres。
または、別の回答のdrees で示されているように、単一のコマンドcreateuserをのように実行します。postgressudo
identポイントは、同じ名前のデータベース ロールに一致するオペレーティング システム ユーザーを使用して、認証を介してアクセスを許可することです。postgresデータベース クラスタを初期化したデフォルトのオペレーティング システム ユーザです。マニュアル:
データベース システムをブートストラップするために、新たに初期化されたシステムには常に 1 つの定義済みロールが含まれています。このロールは常に「スーパーユーザー」であり、デフォルトでは (実行時に変更されない限り
initdb)、データベース クラスターを初期化したオペレーティング システム ユーザーと同じ名前になります。通常、このロールは という名前になりますpostgres。さらにロールを作成するには、最初にこの初期ロールとして接続する必要があります。
非標準のユーザー名を使用した、またはオペレーティング システムのユーザーが存在しない奇妙なセットアップについて聞いたことがあります。そこに戦略を適応させる必要があります。
マニュアルでデータベースの役割とクライアント認証について読んでください。
他の多くの人の解決策を試した後、成功しなかったため、この回答が最終的に役立ちました。
https://stackoverflow.com/a/16974197/2433309
要するにランニング
sudo -u postgres createuser owning_user
owning_user (この場合は h9uest) という名前のロールを作成します。rake db:createその後、Postgres 環境に入る必要なく、設定したアカウント名でターミナルから実行できます。
を使用して postgres をインストールしapt-getても、ユーザー ロールまたはデータベースは作成されません。
個人ユーザー アカウント用のスーパーユーザー ロールとデータベースを作成するには、次の手順を実行します。
sudo -u postgres createuser -s $(whoami); createdb $(whoami)
Windowsユーザーの場合:psql -U postgres
PostgreSQL へのコマンドライン インターフェイスが表示されます。postgres=#
私の場合、DBクラスターを手動で作成すると解決しました。
postgresをインストールしたところ、なぜか「初期DB」が作成されませんでした。実行initdbするとうまくいきました。
このソリューションは、PostgreSQL Wiki - First stepsで提供されています。
initdb
通常、postgres を OS にインストールすると、「初期 DB」が作成され、postgres サーバー デーモンの実行が開始されます。そうでない場合は、initdb を実行する必要があります
--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
ポートを 5432 から 5433 に変更するだけでうまくいきました。