2013-06-06 7 views
53

初めてPostgresを設定しようとしていますが、データベースの読み取りと作成の権限を持つユーザーを作成する必要があります。Createuser:データベースのpostgresに接続できませんでした:致命的な:role "tom"が存在しません

createuserは:データベースのpostgresに接続できませんでした:FATAL:役割「トムは」

トムはあるが存在していない私は、端末に「createuserはユーザー名」を使用する場合しかし、私は次のメッセージが表示されます今私がログインしている私のUbuntuユーザーアカウント。私は "postgres"のユーザー名を作成しようとしているので、 "psql -U psql template1"を実行してデータベースを作成し、私のRailsアプリケーション用のオーナーを割り当てます。

助けが必要ですか?

答えて

-2

initdbを最初に実行する必要があります。それは

はあなたがUbuntuのは、私はあなたがUbuntuのからのapt経由のPostgreSQLパッケージをインストール推測するつもりだ言及How to configure postgresql for the first time?http://www.postgresql.org/docs/8.4/static/app-initdb.html

+4

これは完全に間違っています。もしユーザが 'i​​nitdb'を実行していなければ、報告されたエラーメッセージを生成するために、データベースサーバが稼働しておらず、接続を受け入れていないでしょう。この誤解を招くような回答を削除してください。(最近、/ docs/current/staticにリンクして、古くなったリンクが蓄積しないようにしてください) –

91

を参照してください。データベースクラスタと初期設定を作成します。

もしそうならば、postgres PostgreSQLユーザアカウントはすでに存在し、pg_hba.confのユークリッドソケットのためにpeer認証を介してアクセスできるように設定されています。あなたは、例えば、postgres UNIXユーザーとしてコマンドを実行して、それを取得:

sudo -u postgres createuser owning_user 
sudo -u postgres createdb -O owning_user dbname 

これは、すべての最初のGoogleは「UbuntuでのPostgreSQL」のヒット、多数のスタックオーバーフローの質問に覆われていUbuntu PostgreSQLドキュメントです。

+0

owning_userを作成した後も、このユーザーとどうやって接続しますか?私はデフォルトユーザiを接続することを意味します。 sudo -u postgres psql postgres 同じようにowning_userに接続するには? – Jony

+1

3つのオプション。 (a)そのユーザのパスワードを設定し、 'pg_hba.conf'を編集してそのユーザに' md5' authを使用させます(マニュアルを参照)。 (b)OSユーザーを同じ名前で作成し、 'peer' authを使用し続けます。 (c)さらに進んだ方は、OSユーザが新しいユーザとしてログインできるように 'pg_ident.conf'マッピングを作成してください。 –

23
sudo -u postgres createuser -s tom 

これはあなたを助ける必要があります(あなたはPostgreSQLをインストールする方法あなたがにしているOSとバージョン、などのような細部を省略して答えるために多くの困難にこの質問をしました)管理者がPostgreSQLユーザアカウントを作成していない場合に発生します。また、オペレーティングシステムのユーザ名とは異なるPostgreSQLユーザ名が割り当てられている可能性もあります。その場合は、-Uスイッチを使用する必要があります。

3

あなたのエラーは公式な文書に掲載されています。あなたはread this articleです。

私はあなたの理由をコピー(およびURLをハイパーリンク)その記事からしている:

管理者があなたのためのPostgreSQLユーザアカウントを作成していない場合に発生します。 (PostgreSQLのユーザアカウントは、オペレーティングシステムのユーザアカウントとは異なります。)管理者の場合は、Chapter 20を参照してアカウントを作成してください。最初のユーザアカウントを作成するには、PostgreSQLがインストールされたオペレーティングシステムユーザ(通常はポストグル)になる必要があります。また、オペレーティングシステムのユーザ名とは異なるPostgreSQLユーザ名が割り当てられている可能性もあります。あなたがあなたの目的のために

あなたのPostgreSQLユーザ名を指定するには、-Uスイッチを使用するか、PGUSER環境変数を設定する必要があり、その場合では、あなたが行うことができます:

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

sudo -u postgres createuser tom -d -P 

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

2)createdbとその他のPostgreSQLコマンドを実行できるはずです。

20

See git gist with instructions here

を実行し、この:あなたの端末で

sudo -u postgres psql 

はpostgresのに入るために

postgres=# 

実行

CREATE USER new_username; 

注:とnew_usernameを交換してください作成したいユーザー、あなたの場合はtomとなります。あなたは、ユーザーがDBを作成できるようにすることを望むので

postgres=# CREATE USER new_username; 
CREATE ROLE 

、あなたは、すべてが正常に行われた、

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=# 
+0

これはpostgresに入るために働いた: 'psql -U postgres' – leontalbot

2

1 - デフォルトとしてログインPostgreSQLのユーザ(postgres)

sudo -u postgres -i 

2- postgresユーザーです。私は同じ問題を持っていたcreateuserコマンド

[postgres]$ createuser --interactive 

3出口

[postgres]$ exit 
0

を使用して、新しいデータベースユーザーを追加し、私はちょうどこの

sudoのsuコマンドを実行します - postgresの

でCreateUser odooパスワード用の-U postgres -dRSP #P (odooまたはユーザー名あなたはpostgresへのアクセスを許可したい)

関連する問題