1

私は Ubuntu 11.10 でユーザーPostgreSQLと一緒に学習しています。Django で操作するデータベースを作成してからアクセスするために、(経由で) ターミナルにDjangoPostgreSQL () をインストールしたときに作成したユーザーに切り替える必要があることがわかりました。. 残念ながら、ユーザーは私のローカル ファイル システムに対するファイル書き込み権限を持っていないため、画像フィールドを持つデータベースにモデル オブジェクトを追加するなどの特定の操作を実行しようとすると、ブロックされます。しかし、ターミナルで通常の Ubuntu ユーザー名に切り替えて、Django の開発サーバーの管理サイトにアクセスしようとすると、次のようなエラーが表示されます。"postgres""sudo su postgres""postgres"

OperationalError at /admin/

FATAL:  Peer authentication failed for user "postgres"

Request Method:     GET
Request URL:    http://127.0.0.1:8000/admin/
Django Version:     1.3.1
Exception Type:     OperationalError
Exception Value:    

FATAL:  Peer authentication failed for user "postgres"

Exception Location:     /usr/local/lib/python2.7/dist-packages/django/db/backends/postgresql_psycopg2/base.py in _cursor, line 140
Python Executable:  /usr/bin/python
Python Version:     2.7.2

Django プロジェクト用に作成したデータベースへの通常のユーザー アクセスを許可するために PostgreSQL のドキュメントを読み込もうとしていますが、PostgreSQL のロール/ユーザー間の関係を理解し​​ていないため、わかりません。およびUbuntuユーザー。通常の Ubuntu ユーザー名に PostgreSQL のデータベースへのアクセスを許可する方法を誰かに説明してもらえますか? PostgreSQLのドキュメントを使用してつなぎ合わせようとしたが、完全に迷ってしまったので、おそらく特定の手順のリストが必要になるでしょう。

4

2 に答える 2

9

cfedermann は正しかった。これは次の質問の複製です。

PostgreSQL への Django 接続:「ピア認証に失敗しました」

そして解決策は同じです。私の Django プロジェクトの 'settings.py' ファイルの DATABASES セクションの下に、'HOST' が空の文字列に設定されました。 「ローカルホストの空の文字列に設定してください」と言います。'localhost' を明示的に入力した後で初めて、デフォルトの Linux ユーザー名で psql データベースに接続できるようになったため、これは明らかに正しくありません。

ここでの教訓は、開発中のpostgresqlでDjangoを使用しようとしている他のすべての初心者に、「settings.py」ファイルに「LOCALHOST」を入力してください。そうしないと、接続できなくなります。自分のマシンに保存されている psql データベースに!

答えを教えてくれたcfedermannに感謝します。

于 2012-04-18T12:56:57.600 に答える
1

Postgres ident に関する注意事項

通常のユーザーは、ローカル ホストからのログインを許可されていない可能性があります。django プロジェクトが PG データベースと同じマシンで実行されている場合は、pg_ident.conf ファイルを確認する必要があります。

基本的に、UNIX ユーザーが自動的に postgre ユーザーにマップされるように postgres を設定できるため、pgsql を実行するとログインが試行されます。ユーザーが外部 IP またはローカル ホストからログインするのをブロックできます。したがって、Django の設定をいじる前に、まずこれらの設定を確認してください。

ELSEこれを試してください

わかりました、おそらくこれを行う必要があります

sudo passwd postgres 

unix postgres ユーザーのパスワードを入力してから、

su postgres
psql
create database djangodb;
create role djangouser with password 'something';

これらのユーザーの詳細を settings.py ファイルで試してください。postgres の詳細はこちら

また

Ident メソッドpg_hba.conf ファイル

これは役に立ちますか?

于 2012-04-17T10:00:06.687 に答える