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 exit
user としての操作が完了したら入力しますpostgres
。
または、別の回答のdrees で示されているように、単一のコマンドcreateuser
をのように実行します。postgres
sudo
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 に変更するだけでうまくいきました。