Django POSTGRESQLでのプロジェクト設定で問題が発生しています。
これは私のsetting.pyデータベース設定です
DATABASES = {
'default':{
'ENGINE':'Django.db.backends.postgresql_psycopg2', # '.postgresql_psycopg2', '.mysql', or '.Oracle'
'NAME':'indivo', # Required to be non-empty string
'USER':'indivo', # Required to be non-empty string
'PASSWORD':'ritvik',
'Host':'', # Set to empty string for localhost.
'PORT':'', # Set to empty string for default.
},
}
今、postgresバックエンドで私がやったことは。
rohit@rohit-desktop:~$ Sudo su - postgres
postgres@rohit-desktop:~$ createuser --superuser indivo # create a super user indivo
postgres@rohit-desktop:~$ psql # open psql terminal
psql (9.1.8)
Type "help" for help.
postgres=# \password indivo # set the password ritvik
Enter new password:
Enter it again:
postgres=# \q #logout
postgres@rohit-desktop:~$ createdb -U indivo -O indivo indivo #create db indivo
残念ながら、syncdbを実行しようとするとエラーが発生します。
psycopg2.OperationalError: FATAL: Peer authentication failed for user "indivo"
ここで何が間違っているのか助けてください。
私は同様の問題を抱えており、 この回答 settings.pyのlocalhost
設定をHost
設定に追加することで解決したため、データベース設定は次のようになります。
DATABASES = {
'default':{
'ENGINE':'Django.db.backends.postgresql_psycopg2', # '.postgresql_psycopg2', '.mysql', or '.Oracle'
'NAME':'indivo', # Required to be non-empty string
'USER':'indivo', # Required to be non-empty string
'PASSWORD':'ritvik',
'Host':'localhost', # <- Changed from empty string to localhost
'PORT':'', # Set to empty string for default.
},
}
多くのLinuxディストリビューションのデフォルトでは、DBへのUnixソケット接続のクライアント認証は「ピア」に設定されています。これはpg_hba.conf
postgresqlの設定ファイル。 psycopg2 pythonライブラリドキュメントの状態:
-*ホスト*:データベースのホストアドレス(提供されない場合のデフォルトはUNIXソケット)
そのため、ホストオプションを空白のままにすると、スクリプトは認証にUnixユーザー名:パスワードを使用して接続しようとします。修正するには、次のいずれかを実行できます。
pg_hba.conf
ファイルはソケット接続にmd5を使用するため、postrgres DBユーザーストアに保存されているユーザー名とパスワードを使用します(これはシステムユーザーの認証を中断する可能性があるため推奨されません)対象のユーザー、データベース、およびソースIPに対してpg_hba.conf
認証を使用するには、md5
を設定する必要があります。ドキュメントの クライアント認証 の章を参照してください。
スタックオーバーフローでpg_hba.conf
を検索すると、さらに多くの情報が得られます。
私もDjangoプロジェクトでpostgresqlデータベースを設定するときに同様の問題に直面していました。
私のシステムは、postgresqlバージョン10でRHEL CentOS 7を実行しています。/var/lib/pqsql/10/data/log/postgresql*.logにログが表示されるまで、多くを検索しましたが、実際に何が起こっているのかを見つけることができませんでした。
2017-11-10 00:31:40.499 IST [14129]詳細:接続がpg_hba.confの85行目に一致しました:「すべてホスト:: 1/128 identをすべてホスト」
したがって、ファイル/var/lib/pgsql/10/data/pg_hba.confの特定の行を変更しました。ホストからすべてすべて:: 1/128 ident
に
すべてをホストする:: 1/128 md5
それにより、manage.py migrateを使用してデータベースとテーブルを作成できます
この解決策を見つけてくれたすべての人に感謝します。特に@juliocesarおよびpostgresqlクライアント認証の公式ドキュメント