110

初めて Postgres をセットアップしようとしていますが、データベースの読み取りと作成の権限を持つユーザーを作成する必要があります。ただし、使用する場合:

createuser username

私の端末では、次のメッセージが表示されます。

createuser: データベース pos​​tgres に接続できませんでした: 致命的です: ロール "tom" が存在しません

Tom は、私が現在ログインしている Ubuntu ユーザー アカウントです。「postgres」のユーザー名を作成しようとしているpsql -U psql template1ので、データベースを作成して、Rails アプリの所有者をそれに割り当てることができます。

4

9 に答える 9

89

git gist の手順を参照してください。

これを実行します:

 sudo -u postgres psql

また

psql -U postgres

端末でpostgreに入る

注: Mac を使用していて、上記の両方のコマンドが失敗した場合は、以下の Mac に関するセクションにジャンプしてください。

postgres=#

走る

CREATE USER new_username;

注: new_username を、作成するユーザー (この場合は tom) に置き換えます。

postgres=# CREATE USER new_username;
CREATE ROLE

そのユーザーがDBを作成できるようにするため、ロールをスーパーユーザーに変更する必要があります

postgres=# ALTER USER new_username SUPERUSER CREATEDB;
ALTER ROLE

確認するために、すべてが成功しました。

postgres=# \du
                         List of roles
 Role name |                   Attributes                   | Member of 
-----------+------------------------------------------------+-----------
new_username     | Superuser, Create DB                           | {}
postgres         | Superuser, Create role, Create DB, Replication | {}
root             | Superuser, Create role, Create DB              | {}

postgres=# 

更新/修正 (Mac の場合):

最近、Mac で同様のエラーが発生しました。

psql: FATAL: role "postgres" does not exist

これは、ロール名がログイン (短い) 名と同じデータベース スーパーユーザーでインストールがセットアップされたためです。

ただし、一部の Linux スクリプトでは、スーパーユーザーが従来の役割名であると想定しています。postgres

これをどのように解決しましたか?

runでインストールした場合homebrew:

/usr/local/opt/postgres/bin/createuser -s postgres

特定のバージョンの postgres を使用している場合は、次の10.5ように実行します。

/usr/local/Cellar/postgresql/10.5/bin/createuser -s postgres

また:

/usr/local/Cellar/postgresql/10.5/bin/createuser -s new_username

また:

/usr/local/opt/postgresql@11/bin/createuser -s postgres

postgres.appfor Mac を実行してインストールした場合:

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

PS: 10.5 を PostgreSQL のバージョンに置き換えてください

于 2016-05-28T15:07:22.843 に答える
32
sudo -u postgres createuser -s tom 

これは、管理者が PostgreSQL ユーザー アカウントを作成していない場合に発生するため、役立つはずです。また、オペレーティング システムのユーザー名とは異なる PostgreSQL ユーザー名が割り当てられている可能性もあります。その場合は、-U スイッチを使用する必要があります。

于 2013-08-07T18:42:39.193 に答える
7

エラーは公式ドキュメントに掲載されています。この記事を読むことができます。

その記事からあなたの理由をコピーしました (そして URL にハイパーリンクを付けました):

これは、管理者が PostgreSQL ユーザー アカウントを作成していない場合に発生します。(PostgreSQL のユーザー アカウントは、オペレーティング システムのユーザー アカウントとは異なります。) 管理者の場合は、第 20 章でアカウントの作成に関するヘルプを参照してください。最初のユーザー アカウントを作成するには、PostgreSQL がインストールされたオペレーティング システム ユーザー (通常は postgres) になる必要があります。また、オペレーティング システムのユーザー名とは異なる PostgreSQL ユーザー名が割り当てられた可能性もあります。その場合、-U スイッチを使用するか、PGUSER 環境変数を設定して PostgreSQL ユーザー名を指定する必要があります。

あなたの目的のために、あなたはすることができます:

1) PostgreSQL ユーザー アカウントを作成します。

sudo -u postgres createuser tom -d -P

(-Pパスワードを設定するオプション。ユーザー名「tom」のデータベースの作成を許可するオプション。「tom」はオペレーティング システムのユーザー名であることに注意してください。そうすれば、PostgreSQL コマンドをing-dなしで実行できます。)sudo

createdb2) これで、その他の PostgreSQL コマンドを実行できるようになります。

于 2014-10-06T21:07:47.597 に答える
1

認証方法 (ident) を変更したくない場合や、pg_hba.confをいじりたくない場合は、次のようにします。

デフォルトユーザーとして最初のログイン

 sudo su - postgres

次に psql にアクセスし、ログインしているユーザーと同じ名前のユーザーを作成します

postgres=# CREATE USER userOS WITH PASSWORD 'garbage' CREATEDB;

対応するロールでユーザーを確認するには、

postgres=#  \du

この後、データベースを作成して検証できます

psql -d dbName
\l
\q
于 2020-09-26T23:02:10.757 に答える
1

私は同じ問題を抱えていました、私はこれをします

sudo su - postgres

createuser odoo -U postgres -dRSP #P パスワード ( odooまたはpostgres アクセスに必要なユーザー名)

于 2018-01-16T11:23:03.483 に答える
-3

最初に initdb を実行する必要があります。データベース クラスタと初期セットアップが作成されます。

初めてpostgresqlを構成する方法を参照してください。およびhttp://www.postgresql.org/docs/8.4/static/app-initdb.html

于 2013-06-06T22:13:53.643 に答える