programing

psql: 치명적:사용자 "postgres"에 대한 ID 인증 실패

bestprogram 2023. 6. 1. 23:02

psql: 치명적:사용자 "postgres"에 대한 ID 인증 실패

Postgre를 설치했습니다.SQL 및 pgAdmin내 우분투 카믹 박스에 III.

pgAdmin을 사용할 수 있습니다.III 성공적으로(즉, 연결/로그온) 그러나 명령줄에서 동일한 사용자 이름/pwd를 사용하여 서버에 로그인하려고 하면(psql 사용) 다음 오류가 표시됩니다.

psql: FATAL:  Ident authentication failed for user "postgres"

이제 이 문제를 해결하는 방법을 아는 사람이 있습니까?

다음 단계는 Ubuntu 12.04에서 postgres 9.1을 새로 설치할 때 작동합니다. (Ubuntu 14.04에서도 postgres 9.3.9에서 작동됨)

기본적으로 postgres는 'postgres'라는 사용자를 만듭니다.우리는 그녀로 로그인하고 그녀에게 비밀번호를 알려줍니다.

$ sudo -u postgres psql
\password
Enter password: ...
...

에서 합니다.psql\q또는ctrl+d그런 다음 우리는 '포스트그레스'로 연결됩니다.-h localhost부분은 중요합니다: 그것은 그것을 말합니다.psql암호 인증을 사용하도록 구성된 TCP 연결을 사용하여 연결하려는 클라이언트이며, 암호에 상관없이 피어 연결을 사용하지 않습니다.

$ psql -U postgres -h localhost

pg_hba.conf에서 적절한 설정을 했습니까?

방법은 https://ubuntu.com/server/docs/databases-postgresql 을 참조하십시오.

을 편집합니다./etc/postgresql/8.4/main/pg_hba.conf 를 대체합니다.ident또는peer 쪽인가에 md5또는trust사용자 컴퓨터에서 암호를 요청할지 여부에 따라 달라집니다.그런 다음 다음 구성 파일을 다시 로드합니다.

/etc/init.d/postgresql reload

클라이언트 인증에 실패했기 때문에 이 오류가 발생하고 있습니다.오류 메시지에 따라 모든 Postgre에 대해 클라이언트 인증 방법을 "IDENT"로 설정하는 기본 Postgres 구성이 있을 수 있습니다.SQL 연결.

Postgre에서 섹션 19.1 클라이언트 인증을 반드시 읽어야 합니다.(pg_hba.conf의 각 레코드에 대해) 사용 가능한 인증 설정을 더 잘 이해하기 위한 SQL 설명서가 있지만 (버전 9.5 설명서의) 현재 발생하고 있는 문제를 해결하는 데 도움이 되는 관련 코드 조각이 있습니다.

신뢰

무조건 연결을 허용합니다.이 메서드는 Postgre에 연결할 수 있는 모든 사용자에게 허용됩니다.Postgre로 로그인할 SQL 데이터베이스 서버암호나 다른 인증이 필요 없는 SQL 사용자입니다.자세한 내용은 섹션 19.3.1을 참조하십시오.

불합격

연결을 무조건 거부합니다.이 기능은 그룹에서 특정 호스트를 "필터링"하는 데 유용합니다. 예를 들어, 거부 라인은 특정 호스트의 연결을 차단할 수 있는 반면, 이후 라인은 특정 네트워크의 나머지 호스트의 연결을 허용합니다.

md5

클라이언트가 인증을 위해 이중 MD5 해시 암호를 제공하도록 요구합니다.자세한 내용은 섹션 19.3.2를 참조하십시오.

비밀번호

클라이언트가 인증을 위해 암호화되지 않은 암호를 제공하도록 요구합니다.암호는 네트워크를 통해 일반 텍스트로 전송되므로 신뢰할 수 없는 네트워크에서는 사용할 수 없습니다.자세한 내용은 섹션 19.3.2를 참조하십시오.

gss

GSSAPI를 사용하여 사용자를 인증합니다.TCP/IP 연결에만 사용할 수 있습니다.자세한 내용은 섹션 19.3.3을 참조하십시오.

스파이

SSPI를 사용하여 사용자를 인증합니다.Windows에서만 사용할 수 있습니다.자세한 내용은 섹션 19.3.4를 참조하십시오.

동일한

클라이언트의 ID 서버에 연결하여 클라이언트의 운영 체제 사용자 이름을 얻고 요청된 데이터베이스 사용자 이름과 일치하는지 확인합니다.ID 인증은 TCP/IP 연결에서만 사용할 수 있습니다.로컬 연결에 대해 지정하면 피어 인증이 대신 사용됩니다.자세한 내용은 섹션 19.3.5를 참조하십시오.

또래

운영 체제에서 클라이언트의 운영 체제 사용자 이름을 가져와 요청한 데이터베이스 사용자 이름과 일치하는지 확인합니다.로컬 연결에서만 사용할 수 있습니다.자세한 내용은 섹션 19.3.6을 참조하십시오.

ld

LDAP 서버를 사용하여 인증합니다.자세한 내용은 섹션 19.3.7을 참조하십시오.

반지름

RADIUS 서버를 사용하여 인증합니다.자세한 내용은 섹션 19.3.8을 참조하십시오.

확실한

SSL 클라이언트 인증서를 사용하여 인증합니다.자세한 내용은 섹션 19.3.9를 참조하십시오.

운영 체제에서 제공하는 PAM(Pluggable Authentication Module) 서비스를 사용하여 인증합니다.자세한 내용은 섹션 19.3.10을 참조하십시오.

현재 발생하고 있는 문제를 해결하기 위해 다음 중 하나를 수행할 수 있습니다.

  1. 에정인방변다니에 합니다.pg_hba.conf을 로다철하에 합니다.trust,md5또는password(보안 및 단순성 요구사항에 따라 다름) 여기에서 정의한 로컬 연결 레코드에 대한 정보를 제공합니다.

  2. pg_ident.conf를 Postgre Postgre 매니다에 .SQL 사용자는 필요에 따라 해당 액세스 권한을 부여합니다.

  3. IDENT 설정은 그대로 두고 액세스 권한을 부여할 각 운영 체제 사용자에 대한 사용자를 데이터베이스에 생성합니다.사용자가 이미 OS에 의해 인증되고 로그인된 경우 PostgreSQL은 추가 인증을 요구하지 않으며 데이터베이스에서 할당된 권한(역할)에 따라 해당 사용자에게 액세스 권한을 부여합니다.이것이 기본 구성입니다.

참고: 위치의 :pg_hba.conf그리고.pg_ident.confOS에 종속됩니다.

게추가다니합하단순▁the를 추가하면 됩니다.-h localhost 위해 이었습니다.

중 당신에게 것이 : 위의항목중하사수용없경우는할도:

저는 Postgres 설치를 꽤 많이 했지만, 오늘 RedHat 6.5 시스템(Postgres 9.3 설치)에서 당황했습니다.Aron이 위에 표시한 일반적인 hba.conf 구성이 작동하지 않았습니다.알고 보니 시스템에서 IPV6를 사용하고 IPV4 구성을 무시하고 있었습니다.라인 추가:

host    all             all             ::1/128                 password

성공적으로 로그인할 수 있습니다.

페도라26 및 postgres9.6의 경우

먼저 user root로 기록한 후 다음 명령을 사용하여 topsql을 입력합니다.

$ su postgres  

그리고나서

$ psql

psql of 는 hba_file ==>를 합니다.pg_hba.conf

postgres=# show hba_file ; 
 hba_file  
--------------------------------------   
 /etc/postgresql/9.6/main/pg_hba.conf  
(1 row)  

일렬 종대로pg_hba.conf 사용자 권한

host all all 127.0.0.1/32 md5

저의 경우, 솔루션은 여기에 있습니다: (관련자를 위해) 포스트그레스에 로그인합니다.

sudo -i -u postgres
psql
ALTER USER postgres WITH PASSWORD 'postgres'; # type your password here

안부 전해요

환 변 설 할 수 있 니 다습을 설정할 수 있습니다.PGHOST=localhost:

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

$ export PGHOST=localhost
$ psql -U db_user db_name

Password for user mfonline:

음...

pgAdminpgAdmin에서 사용자 할 수 있지만 연결할 수 없습니다.psql그러면 그 두 프로그램은 아마도 다르게 데이터베이스에 연결되어 있을 것입니다.

[다른 데이터베이스에 연결하는 경우, 먼저 동일한 데이터베이스에 연결해 보십시오.아래를 참조하십시오.

Postgre에서SQL: 문서: 9.3: psql:

호스트 이름을 생략하면 psql은 Unix 도메인 소켓을 통해 로컬 호스트의 서버에 연결하거나, Unix 도메인 소켓이 없는 시스템의 TCP/IP를 통해 로컬 호스트에 연결합니다.

다음과 같은 작업을 수행하지 않을 경우psql ... -h host_name ...그리고 당신은 우분투를 운영하고 있습니다.psqlUnix 도메인 소켓을 통해 연결해야 하므로 PostgreSQL이 postgres 사용자에 대한 암호 인증 방법 중 하나를 허용하도록 구성되어 있지 않습니다.

다음을 실행하여 테스트할 수 있습니다.

sudo -u postgres psql

위에서 설명한 내용이 작동하면 서버가 postgres 사용자의 로컬 연결에 피어 인증을 사용하도록 구성되어 있을 수 있습니다. 즉, 사용자 이름을 OS에 요청하여 postgres임을 확인합니다.

그래서 아마도 당신의 pg_hba.conf 파일일 것입니다.

파일의 전체 경로는 /etc/postgresql/9.3/main/pg_hba.conf같습니다.예를 들어 다음과 같이 볼 수 있습니다.sudo cat /etc/postgresql/9.3/main/pg_hba.conf | more.

에서 호스트 psql다음 항목을 pg_syslog.conf 파일에 추가하면 연결할 수 있습니다.

# Connection type   Database   User       IP addresses   Method
local               all        postgres                  md5

[pg_hba.conf 파일의 주석이 달린 행은 다음으로 시작합니다.#.]

호스트 이름을 포함하는 경우psql명령 대신 다음 항목을 추가합니다.

# Connection type   Database   User       IP addresses   Method
host                all        postgres   127.0.0.1/32   md5

연결에 대해 다른 항목이 일치하기 전에 항목을 입력해야 합니다.psql그것을 어디에 두어야 할지 의문이 든다면, 논평되지 않은 첫 번째 줄 앞에 놓으십시오.

pg_hba.conf에 대한 자세한 정보

Postgre에서SQL: 문서: 9.3: pg_hba.conf 파일 [굵은 강조 마이]:

연결 유형, 클라이언트 주소, 요청된 데이터베이스 및 사용자 이름이 일치하는 첫 번째 레코드는 인증을 수행하는 데 사용됩니다."폴스루(fall-through)" 또는 "백업(backup)"은 없습니다. 하나의 레코드를 선택하고 인증에 실패하면 이후의 레코드는 고려되지 않습니다.일치하는 레코드가 없으면 액세스가 거부됩니다.

인증 방법에서 레코드가 일치하지 않습니다.따라서 pg_hba.conf 파일에 다음 항목이 포함된 경우:

# Connection type   Database   User       IP addresses   Method
local               all        postgres                  peer

그러면 다음을 통해 연결할 수 없습니다.

psql -u postgres

다음 항목 중 하나가 이전 항목 위의 pg_hba.conf 파일에 없는 경우:

# Connection type   Database   User       IP addresses   Method
local               all        postgres                  md5
local               all        postgres                  password   # Unencrypted!
local               all        all                       md5
local               all        all                       password   # Unencrypted!

위의 모든 답변 중에서 저에게 효과가 있는 것은 없었습니다.데이터베이스에서 사용자 비밀번호를 수동으로 변경해야 하는데 갑자기 작동했습니다.

psql -U postgres -d postgres -c "alter user produser with password 'produser';"

다음 설정을 사용했습니다.

pg_pg.conf

local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            password  
# IPv6 local connections:
host    all             all             ::1/128                 password

다음 명령에 대한 연결이 마침내 성공했습니다.

psql -U produser -d dbname -h localhost -W 

포트 113을 수신하는 ID 서버를 설치해야 했습니다.

sudo apt-get install pidentd
sudo service postgresql restart

그리고 아이덴티티가 작동했습니다.

문제는 여전히 당신의 pg_hba.conf 파일입니다.다음 줄:이 파일은 /etc/postgres/variion/main에서 찾을 수 있습니다.

local   all             postgres                                peer
Should be

local   all             postgres                                md5

공식 Postgre에 따르면 두 가지 옵션에 대한 간략한 설명입니다.인증 방법에 대한 SQL 문서입니다.

피어 인증

피어 인증 방법은 커널에서 클라이언트의 운영 체제 사용자 이름을 가져와 허용된 데이터베이스 사용자 이름(선택적 사용자 이름 매핑 포함)으로 사용하는 방식으로 작동합니다.이 메서드는 로컬 연결에서만 지원됩니다.

암호 인증

암호 기반 인증 방법은 md5 및 암호입니다.이러한 방법은 연결을 통해 암호를 보내는 방법, 즉 각각 MD5 해시 및 일반 텍스트를 보내는 방법을 제외하고는 유사하게 작동합니다.

암호 "스니핑" 공격이 우려되는 경우 md5를 사용하는 것이 좋습니다.가능한 경우 일반 암호는 항상 사용하지 않아야 합니다.그러나 md5는 db_user_namespace 기능과 함께 사용할 수 없습니다.연결이 SSL 암호화로 보호되는 경우 암호를 안전하게 사용할 수 있습니다(SSL 인증서 인증이 SSL 사용에 의존하는 경우에는 SSL 인증서 인증이 더 나은 선택일 수 있음).

이 파일을 변경한 후에는 Postgre를 다시 시작하는 것을 잊지 마십시오.SQL Linux를 사용합니다.sudo service postgresql restart.

에서 Postgre Postgre 9.3에 대한 제 은 bash를 사용하는 이었습니다.sudo폴더로 폴더에 추가합니다.pg_hba.conf모든 사용자를 신뢰하고 로그인할 수 있도록 허용하는 파일입니다.제가 한 일은 이렇습니다.

# in bash_profile edit PGDATA environmental variable
open ~/.bash_profile

# append this line to bash_profile
export PGDATA="/Library/PostgreSQL/9.3/data"

# reload bash_profile
source ~/.bash_profile

# open pg_hba.conf in vim
sudo vi /Library/PostgreSQL/9.3/data/pg_hba.conf

# append these two lines to the end of the pg_hba.conf file
local   all   all                  trust
host    all   all   127.0.0.1/32   trust

# can now login as user in bash
psql -d <db_name> -U <user_name> -W

저는 제가 인정하고 싶은 이 오류를 해결하는 데 더 많은 시간을 보냈습니다.

pg_hba.conf의 인증 구성 순서는 당신의 경우와 관련이 있다고 생각합니다.기본 구성 파일에는 바닐라 설치에 여러 줄이 포함되어 있습니다.이러한 기본값은 인증 실패로 이어지는 인증 시도 조건과 일치할 수 있습니다..conf 파일 끝에 추가된 추가 구성에 관계없이 실패합니다.

를 사용하여 구성 줄을 확인하려면 기본 로그 파일에서 메시지를 확인하십시오.당신은 이런 것을 볼 수도 있습니다.

LOG:  could not connect to Ident server at address "127.0.0.1", port 113: Connection refused
FATAL:  Ident authentication failed for user "acme" 
DETAIL:  Connection matched pg_hba.conf line 82: "host     all             all             127.0.0.1/32            ident"

이 기본 라인이 거부 반응을 일으키는 것으로 나타났습니다.

host    all             all             127.0.0.1/32            ident

그것을 논평해 보세요.

이 모든 작업을 수행했지만 여전히 작동하지 않으면 해당 사용자의 만료를 확인합니다.

Postgres 암호 인증 실패

나는 비슷한 문제가 있었고 IP6 주소에 대한 모든 ID 메서드를 제거할 때 pg_hba.conf에서 수정했습니다(기계에 IP4만 있음에도 불구하고).

host all all 127.0.0.1/32 password
host all all ::1/128 password
#for pgAdmin running at local network
host all all 192.168.0.0/24 md5

이 문제를 해결하는 한 가지 해킹은 pg_hba.conf를 편집하는 것입니다.

sudo vi /etc/postgresql/9.3/main/pg_hba.conf

임시로

# Database administrative login by Unix domain socket
local   all             postgres                                   trust

이 시점에서 작업이 완료됩니다.보안을 위해, 가서, 그리고.

sudo -u postgres psql template1
ALTER USER postgres with encrypted password 'your_password';

그런 다음 다시 돌아가서 pg_syslog.conf를 다음으로 설정합니다.

# Database administrative login by Unix domain socket
local   all             postgres                                   md5

CentOS에서 사용하는 경우 위의 해결책을 만든 후에 postgres를 다시 로드해야 할 수도 있습니다.

systemctl restart postgresql-9.3.service

Postgre의 구성 문제와 관련이 있습니다.SQL 설치:

아래에 언급된 conf 파일에서 # TYPE DATABASE USER ADDRESS MODE 섹션 구성

업데이트할 방법(md5)을 사용자의 파일 위치에 따라 /var/lib/pgsql/10/data/pg_hba.conf를 찾아 편집합니다.아래와 같이 비교하여 구성에 대한 항목이 없는 경우 파일의 항목을 업데이트합니다.

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     trust
local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host    all             all             0.0.0.0/0            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

아래에 언급된 conf 파일에서 연결 및 인증 섹션 구성

파일 위치를 기반으로 /var/lib/pgsql/10/data/postgresql.conf를 찾아서 편집합니다. 수신 대기 주소 및 포트 업데이트

listen_addresses = '*' // # what IP address(es) to listen on;
                                    # comma-separated list of addresses;
                                    # defaults to 'localhost'; use '*' for all
port = 5432 // Set port as 5432

Postgre를 다시 시작합니다.SQL:

sudo systemctl restart postgresql-10 # Update service name based on your installation

윈도우즈의 경우 pb_gba.confie를 편집하지 않으려면 이 메서드를 MD5(기본값)로 유지하고 PGadmin의 쿼리 도구에서 이 쿼리를 실행하여 새 사용자를 생성합니다.

CREATE USER admin WITH PASSWORD 'secret'

cmd 단위로

psql "dbname=Main_db host=127.0.0.1 user=admin password=secret port=5432

여기서 dbname은 postgresql의 db입니다.

여기에 이미지 설명 입력

저는 이것을 따라한 후에도 같은 문제를 겪었습니다: Postgre.Ubuntu 12.04에서 Rails 개발을 위한 SQL 설정

다른 답변을 시도했지만 "config/database.yml"만 있으면 되었습니다.

development:
  adapter: postgresql
  encoding: unicode
  database: (appname)_development
  pool: 5
  username: (username you granted appname database priviledges to)
  password:

이 문제를 해결하기 위해 pdAdmin을 다시 설치해야 했습니다.

brew cask reinstall pgadmin4

GCP SQL에서 테라폼을 통해 사용자 이름과 비밀번호를 프로비저닝했는데, 문제는 테라폼을 통해 비밀번호가 제대로 설정되지 않아 적절한 수정은 아니지만 정확한 원인을 파악하기 위한 것입니다.

나는 GCP 콘솔에서 사용자의 비밀번호를 변경했고 그것이 작동했습니다.

이것은 저에게 효과가 있었습니다: http://tecadmin.net/fatal-ident-authentication-failed-for-user-postgres/ #

local   all             postgres                                trust
local   all             myapp_usr                               trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
#host    all             all             ::1/128                 trust

언급URL : https://stackoverflow.com/questions/2942485/psql-fatal-ident-authentication-failed-for-user-postgres