9

明らかに、これは非常に難しい質問です。なぜなら、簡単なことですが、誰も答えていないように見えるからです。

ubuntu 12.10 サーバー (GUI なし) で PostgreSQL を実行しています。

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

$ psql -U admin -d mydb

しかし、これに対する答えはどこにも見つかりません。

psqlコマンドを su して実行することで、ユーザーpostgresとしてログインできます。

$ sudo su -m postgres
postgres@baseubu1210dev:~$ psql
psql (9.1.7)
Type "help" for help.

postgres=# 

「mydb」という名前のデータベースとユーザー「admin」を次のように作成する方法を見つけました。

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

ユーザー「admin」が「mydb」データベースに接続できることを確認する方法がわかりません。おそらく、そのような権限を持つ人は必要ないのでしょうか? [私が書いているように、おそらく管理者からスーパーユーザー権限を取り消す必要があることに気付きました.]

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

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

私が誤解しているpostgreSQLの実行に関する書かれていない仮定は確かにありますが、数時間検索したり、チュートリアルを見たりしても、問題は解決しませんでした. 誰かがこれがすでに答えられていると言ったら、特にそうであれば、私は完全に幸せです. 答えが簡単であることを願っています。あなたの助けに感謝します。

ありがとう、ゲ

4

2 に答える 2

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.conf ファイルを変更した後は、忘れずに postgresql をリロードしてください。

アップデート

私が参照した元のブログ投稿は現在オフラインであり、リンクはアーカイブされたバージョンを指しています。報告してくれた @O_the_Del に感謝します。

于 2013-01-26T19:21:31.470 に答える
5

Debian では、PostgreSQL はデフォルトで localhost をリッスンするため、pg_hba.conf に TCP/IP 接続を許可するルールがある場合は、-h パラメータを使用してそのルールに一致させることができます。

psql -U admin -h localhost mydb
于 2013-01-29T03:46:18.200 に答える