psql: FATAL: "dev" 사용자에 대한 피어 인증 실패
새 사용자를 만들지만 데이터베이스에 로그인할 수 없는 경우.
저는 이렇게 합니다.
postgres@Aspire:/home/XXX$ createuser dev
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) y
그런 다음 데이터베이스를 만듭니다.
postgres@Aspire:/home/XXX$ createdb -O dev test_development
그 후에, 나는 노력합니다.psql -U dev -W test_development로그인하려면 다음 오류가 발생합니다.
psql: FATAL: Peer authentication failed for user "dev"
저는 그 문제를 해결하려고 노력했지만 실패했습니다.
시도:
psql -U user_name -h 127.0.0.1 -d db_name
어디에
-U사용자 이름입니다.-h서버의 이름 도메인 수 있습니다.-d는 결할데이다연니에 연결할 입니다.
이 소켓 이 아닌 되지 않습니다. 에도네 Postgresql 의해연그켓로연크결않다니습평지되연가로결런로컬럼것처에다로있가서므음볼는수되워평트메닌이결인소아▁this▁as않▁evaluated로다▁you니습▁evaluated지되▁as가"▁might▁in▁see평▁is▁a▁thuslocal로그결연▁post런▁not▁connect"▁"▁rathernetwork▁socketgion▁a▁by▁then▁as▁post"컬네ql▁domain▁connect다음▁"pg_hba.conf:
local all all peer
했습니다.psql 소켓을 사용하여 합니다.peer가 현재 UNIX 사다음과와 을 가져야 psql 사용자인 UNIX 사용자를 .dev다음으로 로그인합니다.dev또는 사용sudo -u dev psql test_development 데터베이액및용스세스이및(용▁for▁accessing▁the▁(스andpsql암호를 요청해서는 안 됩니다.
UNIX 사용자를 생성할 수 없거나 생성하지 않을 경우(예: 임시 쿼리를 위해 데이터베이스에 연결하고 소켓 연결 강제 적용)psql --host=localhost --dbname=test_development --username=dev(@meyeron 답변에서 지적한 바와 같이) 즉각적인 문제를 해결할 수 있습니다.
하지만 method 을 통해 비밀번호 을 강제로 과 같이 .pg_hba.conf표시:
부터
# TYPE DATABASE USER ADDRESS METHOD
local all all peer
로.
# TYPE DATABASE USER ADDRESS METHOD
local all all md5
peerUNIX 사용자의 ID(인증)를 신뢰한다는 의미입니다.그래서 비밀번호를 묻지 않습니다.md5즉, 항상 암호를 요청하고, 해시 후 유효성을 검사합니다.MD5.
물론 특정 데이터베이스 또는 사용자에 대한 보다 구체적인 규칙을 만들 수 있으며 일부 사용자는peer암호가 필요한 기타 항목.
를 한 후pg_hba.conf Postgre라만 중입니다. 다시(SQL 실중입다니). 다시 로드하여 구성을 다시 읽도록 해야 합니다.pg_ctl reload ( 를 다시 시작합니다.sudo service postgresql restart).
»pg_hba.conf에 있을 가능성이 가장 높습니다./etc/postgresql/9.x/main/pg_hba.conf
편집: @Chloe, @Javier의 발언EH, @Jonas Eicher, @fccoelho, @Joanis, @Uphill_답변에 포함된 의견.
피어 인증은 postgres가 운영 체제에 로그인 이름을 묻고 인증에 이 이름을 사용한다는 것을 의미합니다.postgres에서 피어 인증을 사용하여 사용자 "dev"로 로그인하려면 사용자가 운영 체제의 사용자 "dev"여야 합니다.
인증 방법에 대한 자세한 내용은 Postgresql 설명서에서 확인할 수 있습니다.
힌트: 인증 방법이 더 이상 작동하지 않으면 네트워크에서 서버의 연결을 끊고 "localhost"에 대해 "trust"라는 방법을 사용합니다(그리고 "trust"라는 방법이 사용되는 동안 네트워크를 통해 서버에 연결할 수 없는지 다시 확인합니다).
다음을 지정할 때
psql -U user
Socket을 되며, 되는 UNIX 소켓입니다peer 에서지 경인않증에 되지 않은 pg_hba.conf그렇지않으면.
다음을 지정할 수 있습니다.
host database user 127.0.0.1/32 md5
host database user ::1/128 md5
된 "IPv4 " (IPv6 ") " TCP/IP"에 인터페이스 및 모두)에서 TCPdatabase그리고.user.
변경 후에는 postgres를 다시 시작하거나 구성을 다시 로드해야 합니다.최신 RHEL/Debian 기반 디스트리뷰터에서 작동해야 하는 재시작:
service postgresql restart
다시 로드는 다음과 같은 방식으로 작동해야 합니다.
pg_ctl reload
그러나 PATH 구성에 따라 명령이 다를 수 있습니다. 절대 경로를 지정해야 할 수도 있습니다. 절대 경로는 포스트그레스가 설치된 방식에 따라 다를 수 있습니다.
그런 다음 다음을 사용할 수 있습니다.
psql -h localhost -U user -d database
그것으로 로그인하기 위해user를 지정함database 전송됩니다.md5암호화된 암호를 나타내는 반면, 사용자가 지정할 수도 있습니다.password권한 부여 중 일반 텍스트 암호의 경우.데이터베이스 서버가 네트워크 액세스 없이 로컬로만 액세스할 수 있는 한 이 두 가지 옵션은 큰 문제가 되지 않습니다.
중요한 참고:정의 순서pg_hba.conf문제 - 규칙은 iptables와 같이 위에서 아래로 읽히므로 규칙 위에 제안된 규칙을 추가할 수 있습니다.
host all all 127.0.0.1/32 ident
@flaviodesousa의 답변은 효과적이지만, 모든 사용자(다른 모든 사용자)가 암호를 입력하도록 의무화합니다.
다른 모든 사용자에 대해 피어 인증을 유지하는 것이 타당한 경우도 있지만 서비스 사용자에 대해서는 예외로 합니다.이 경우 다음과 같은 행을 pg_hba.conf에 추가할 수 있습니다.
local all some_batch_user md5
주석이 달린 머리글 행 바로 아래에 이 행을 추가하는 것이 좋습니다.
# TYPE DATABASE USER ADDRESS METHOD
local all some_batch_user md5
Postgre를 다시 시작해야 합니다.SQL 사용
sudo service postgresql restart
9.3을 사용하는 경우 pg_hba.conf는 다음과 같습니다.
/etc/postgresql/9.3/main/pg_message.conf
이것은 내가 마주쳤을 때 효과가 있습니다.
sudo -u username psql
나는 단지 추가할 수 밖에 없었습니다.-h localhost
가장 쉬운 해결책:
CREATE USER dev WITH PASSWORD 'dev';
CREATE DATABASE test_development;
GRANT ALL PRIVILEGES ON DATABASE test_development to dev;
ALTER ROLE dev CREATEROLE CREATEDB;
제 경우에는 다른 포트를 사용하고 있었습니다.기본값은 5432입니다.5433을 사용했습니다.이것은 저에게 효과가 있었습니다.
$ psql -f update_table.sql -d db_name -U db_user_name -h 127.0.0.1 -p 5433
에 이걸, 미에이걸보사위해을들람는래,위▁for미▁in해.postgres에 있습니다./usr/lib/postgresql/10/bin내 Ubuntu 서버에서.
.bashrc 파일의 PATH에 추가하고 마지막에 이 행을 추가했습니다.
PATH=$PATH:/usr/lib/postgresql/10/bin
그 다음에 명령행에
$> source ./.bashrc
환경을 고쳤습니다.bash 파일이 새로 고쳐졌습니다.이제 사용할 수 있습니다.postgres -D /wherever의
pg_dump -h localhost -U postgres -FC -b -v -f mydb.backup mydb
터미널에서 시도:
>> psql -U role_name -d database -h hostname.<domain>.com -W
언급URL : https://stackoverflow.com/questions/17443379/psql-fatal-peer-authentication-failed-for-user-dev
'programing' 카테고리의 다른 글
| mongoose 2개 필드를 사용한 사용자 지정 유효성 검사 (0) | 2023.05.15 |
|---|---|
| 자바 프로세스 목록 (0) | 2023.05.15 |
| Xcode 스토리보드 경고: 현재 구성에서 항목을 참조하는 제약 조건이 해제되었습니다.현재 구성에서 이 제약 조건 해제 (0) | 2023.05.15 |
| 연속 번호 목록을 생성하려면 어떻게 해야 합니까? (0) | 2023.05.15 |
| 컴파일러에 필요한 멤버 'microsoft.csharp.runtimebinder.binder.convert'이(가) 없습니다. (0) | 2023.05.15 |