web-dev-qa-db-ja.com

PostgreSQLエラー:致命的:ロール "username"が存在しません

私はPostgreSQL 9.1をセットアップしています。 PostgreSQLでは何もできません。createdbcreateuserはできません。すべての操作はエラーメッセージを返します

Fatal: role h9uest does not exist

h9uestは私のアカウント名で、私はこのアカウントの下でSudo apt-get install PostgreSQL 9.1です。
rootアカウントについても同様のエラーが続きます。

549
h9uest

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

Sudo -u postgres -i

推奨されるとおり、 here または here

その後、再試行してください。システムユーザーexitとして操作を完了したら、postgresと入力します。

または単一のコマンドcreateuser as postgres with Sudoのように、 dreesで実証 別の答え。

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

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

非標準のユーザー名やオペレーティングシステムユーザーが存在しない奇妙なセットアップを聞いたことがあります。そこで戦略を調整する必要があります。

マニュアルの データベースロール および クライアント認証 についてお読みください。

692

他の多くの人々の解決策を試みた後、そして成功せずに、この答えはついに私を助けた。 

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

一言で言えば、実行中

Sudo -u postgres createuser owning_user

ownering_userという名前のロールを作成します(この場合はh9uest)。その後、あなたはpostgres環境に入る必要なしにあなたが設定したどんなアカウント名でも端末からrake db:createを実行することができます。

245
drees
Sudo su - postgres

psql template1

「スーパーユーザー」としての権限を持つpgsql上でロールを作成します。

CREATE ROLE username superuser;
eg. CREATE ROLE demo superuser;

それからユーザーを作成しなさい 

CREATE USER username; 
eg. CREATE USER demo;

ユーザーに特権を割り当てます

GRANT ROOT TO username;

そして、そのユーザーのログインを有効にすると、通常のpsql template1端末から、例えば:$を実行できます。

ALTER ROLE username WITH LOGIN;
107
Mohammed Saleem

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

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

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

73
Miles Erickson

これは私のために働く:

psql -h localhost -U postgres
62

働き方法、

  1. vi /etc/postgresql/9.3/main/pg_hba.conf
  2. local all postgres peer ここで peer trust に変更します。
  3. 再起動、Sudo service postgresql restart

  4. 今試してみてください、psql -U postgres

Rootユーザーのプロンプトではなく、ローカルユーザーのプロンプトで、次のように入力します。

Sudo -u postgres createuser <local username>

その後、ローカルユーザーのパスワードを入力します。

次に、「role 'username'は存在しません」という生成された前のコマンドを入力します。

もしそうでなければ、上記のステップのために端末メッセージを送ってください。

5
Robert Cambil

私はそれをmacOSにインストールし、そしてしなければならなかった:

cd /Applications/Postgres.app/Contents/Versions/9.5/bin
createuser -U postgres -s YOURUSERNAME
createdb YOURUSERNAME

ここにソースがあります: https://github.com/PostgresApp/PostgresApp/issues/313#issuecomment-192461641

5
Henry

バージョン Postgres 9.5 には、次のコマンドを使用します。

psql -h localhost -U postgres

これが役立つことを願っています。

2

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

何らかの理由で、私がpostgresをインストールしたとき、 "initial DB"は作成されませんでした。 initdb を実行するとうまくいきました。

この解決方法は PostgreSQL Wiki - 最初のステップ にあります。

initdb

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

1
Natacha

これらのステップに従うと、それはあなたのために働くでしょう:

  1. msfconsoleを実行する
  2. タイプdb_console 
  3. db_connect user:pass@Host:port.../database申し訳ありませんが、覚えていませんが、このような場合は、ユーザーとパスワード、ホストとデータベースを、database.ymlに含まれる情報に置き換えます。配置:/usr/share/metasploit-framework/config 
  4. あなたは見るでしょう。モデルキャッシュをバックグラウンドで再構築します。 
  5. Apt-get update && apt-get upgradeと入力すると、端末を再起動してmsfconsoleを起動し、msfconsole: msf>db_statusと入力すると接続されていることを確認できます。
1
Loli Pronoms

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

0
srghma

Windows usersの場合:psql -U postgres

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

0
Andriy Tolstoy
psql postgres

postgres=# CREATE ROLE username superuser;
postgres=# ALTER ROLE username WITH LOGIN;
0
Abel