Postgre에 대한 장고 연결SQL: "피아 인증 실패"
OperationalError at /admin/
FATAL: Peer authentication failed for user "myuser"
이것은 제가 장고 관리 사이트에 접속하려고 할 때 받는 오류입니다.저는 MySQL 데이터베이스를 문제없이 사용해왔습니다.나는 Postgre가 처음입니다.SQL이지만 이 프로젝트에 최종적으로 사용할 호스트에 MySQL이 없기 때문에 전환하기로 결정했습니다.
를 설치하는 수 했습니다.Postgre를 설치하고 SQL을 실행하고,syncdb
준비가 다 되었습니다.
문제는 앱을 데이터베이스에 연결할 수 없다는 것입니다.Postgre에 로그인할 수 있습니다.다운로드한 명령줄 또는 데스크톱 앱을 통한 SQL.대본에는 없는 것뿐입니다.
또한, 나는 사용할 수 있습니다.manage.py shell
DB에 제대로 액세스할 수 있습니다.
무슨 생각 있어요?
예외가 내 연결 설정과 관련이 있다는 것을 알아챘습니다.settings.py 으로 돌아가서 호스트 설정이 없음을 확인했습니다.더하다localhost
들소
내 settings.py 에는 MySQL 데이터베이스용 호스트가 없었지만 Postgre용 호스트를 추가해야 했습니다.작업할 SQL.
제 경우에, 저는 덧붙였습니다.localhost
에▁HOST
세팅하고 작동했습니다.
에 여기다니습있이 있습니다.DATABASES
의 에서.settings.py
.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': '<MYDATABASE>',
'USER': '<MYUSER>',
'PASSWORD': '<MYPASSWORD>',
'HOST': 'localhost', # the missing piece of the puzzle
'PORT': '', # optional, I don't need this since I'm using the standard port
}
}
이는 스크립트가 연결하려는 사용자(여기 있는 내 사용자)가 아닌 다른 사용자 아래에서 실행되고 있기 때문일 수 있습니다.이 경우 피어 인증이 실패합니다.사용자의 솔루션은HOST: "localhost"
피어 인증을 더 이상 사용하지 않기 때문에 작동합니다.은 하만지, 그은보느다립니다것다▁than보다 .HOST: ""
유닉스 소켓을 사용하는 대신 TCP 연결을 사용하기 때문입니다.장고 문서에서:
Postgre를 사용하는 경우SQL은 기본적으로 UNIX 도메인 소켓('pg_hba.conf의 local' 행)을 통해 데이터베이스에 연결됩니다.TCP 소켓을 통해 연결하려면 HOST를 'localhost' 또는 '127.0.0.1'(pg_hba.conf의 host' 행)으로 설정합니다.윈도우즈에서는 UNIX 도메인 소켓을 사용할 수 없으므로 항상 HOST를 정의해야 합니다.
▁pg_hba.conf
. 간단한 은 다음과 같습니다가장 간단한 것은 다음과 같습니다.
local all all trust
모든 동안.local
로드해야 .이 변경 사항을 적용하려면 포스트그레스를 다시 로드해야 합니다.
그러나 다중 사용자 프로덕션 시스템이 문제가 되는 경우 다음과 같은 보다 안전한 시스템을 사용할 수 있습니다.md5
(다양한 인증 방법에 대한 설명은 여기를 참조하십시오.)
완전히 신뢰하는 것보다 더 나은 것은 단지 md5로 설정하는 것입니다.
# "local" is for Unix domain socket connections only
local all all md5
/etc/postgres/9.1/main/pg_hba.conf의 하단을 다음과 같이 편집하여 수정했습니다(md5를 신뢰로 변경하면 데이터베이스 암호가 없을 수 있으며 이는 원하는 암호가 아닐 수 있음을 의미합니다).
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
나는 방금 같은 문제를 우연히 발견했지만, clim이 말한 대로 유닉스 소켓을 사용하고 싶었지만, 여전히 사용함으로써.peer
방법.시스템 사용자 이름과 내부의 postgres 사용자 이름을 매핑했습니다.pg_hba.conf
그것은 그와 함께 일하고 있습니다.peer
방법.
안에서.pg_hba.conf
추가했습니다.
local all all peer map=map-name
안에서.pg_ident.conf
추가했습니다.
map-name mysystem-username mypostgres-username
언급URL : https://stackoverflow.com/questions/8167602/django-connection-to-postgresql-peer-authentication-failed
'programing' 카테고리의 다른 글
파이썬: TO, CC 및 BCC로 메일을 보내는 방법은 무엇입니까? (0) | 2023.07.20 |
---|---|
com.google.common.util.current 클래스가 중복됩니다.들을 수 있는모듈 guava-20.0.jar(com.google.guava:guava:20.0)에서 미래가 발견되었습니다. (0) | 2023.07.15 |
.git 폴더 축소 방법 (0) | 2023.07.15 |
Vuex에서 사용자 지정 개체 메서드를 사용하는 방법은 무엇입니까? (0) | 2023.07.15 |
원격 저장소에서 로컬 Git 분기를 삭제한 후 삭제 (0) | 2023.07.15 |