2013-01-26 7 views
9

これは簡単なので、誰もそれに答えたようではないので、

私はPostgreSQLをubuntu 12.10サーバ(GUIなし)で動作させています。

私の目標 - 私の質問は - 「MYDB」という名前のデータベースと私はシェルから通常のユーザーとしてこのコマンドを与え、データベースに接続することができるように、ユーザ「admin」を作成することです:

$ psql -U admin -d mydb

しかし、私はこの回答をどこにも見つけることができません。

私は psqlのコマンドsuできなくして実行することにより、ユーザとして postgresのにログインすることができます

:私は「MYDB」という名前のデータベースとユーザー「管理者を作成する方法を考え出した

$ sudo su -m postgres 
[email protected]:~$ psql 
psql (9.1.7) 
Type "help" for help. 

postgres=# 

を管理MYDB 『データベース『に接続することができます』:"ように

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

は私がないユーザーがいることを確認する方法を考え出した』 - 多分誰かとそのような特権は必要ありませんか? [。私が書くように、私は、私はおそらく、管理者からのスーパーユーザー権限を取り消す必要があることに気づく]

そして、何私が本当に知りたいのは、正規ユーザーのシェルから接続する方法である:あり

$ psql -U postgres 
psql: FATAL: Peer authentication failed for user "postgres" 

私が誤解しているpostgreSQLの実行に関する確かに書かれていない仮定がありますが、チュートリアルなどを見て2,3時間も探しても問題は解決していません。誰かがこれがすでに答えられていると言ったら、私は完全に幸せになるでしょう。答えは簡単で、あなたの助けに感謝します。エラー・メッセージから

おかげで、 GE

答えて

8

は、認証の設定が正しく設定されていないようです。

PostgreSQLは、データベース自体の設定に加えて、ユーザー、ホスト、データベースごとにどの認証メカニズムを使用できるかを指定する構成ファイル(pg_hba.conf)も使用します。ユーザーはパスワード/ md5パスワードまたは「認証不要」でも接続できるように指定できます

現在の設定では、すべてのユーザーに「ピア」認証が使用されている可能性があります。ログインしているユーザ(シェルユーザも 'admin'と呼ばれるべきです)。あなたの質問から、これはではなく、あなたが望むものであれば、おそらくパスワードまたはMD5認証メカニズムを使いたいと思うでしょう。

私は、これらのページはあなたが必要な答えを与えるだろうと思う:

http://web.archive.org/web/20131001194046/http://blog.deliciousrobots.com/2011/12/13/get-postgres-working-on-ubuntu-or-linux-mint/(アーカイブ版)

公式ドキュメント:

http://www.postgresql.org/docs/current/static/auth-pg-hba-conf.html

をpg_hbaを変更した後のPostgreSQLをリロードすることを忘れないでください。 confファイル!

更新

私が呼ばオリジナルのブログ記事はオフラインになりました、リンクは現在、アーカイブされたバージョンを指します。報告のために@O_the_Delに感謝します。 Debianでは

+0

感謝あなたはそんなに。私は逃げ出す必要がありますが、私は戻ってくるときにあなたの答えとリンクを上回ります。 – zabouti

+0

うまくいきます。 PostgreSQLは素晴らしいデータベースですが、いくつかの状況では非常に急な学習曲線を持っています – thaJeztah

+0

thaJeztah - 私はコメントの中で何をしたのか分からないようですが、基本的にあなたの助言はうまくいきました。本当にありがとう! – zabouti

5

、PostgreSQLはローカルホスト上のデフォルトでリッスンので、あなたは、TCP/IP接続を可能にpg_hba.confの中のルールを持っている場合、あなたはそのルールに一致するには、-hパラメータを使用することができます。

psql -U admin -h localhost mydb 
関連する問題