새로 설치 한 후 Postgresql에 어떻게 로그인하고 인증합니까?


83

민트 우분투에 postgres 8.4를 새로 설치했습니다. Postgres 용 사용자를 생성하고 psql을 사용하여 로그인하려면 어떻게해야합니까?

psql을 입력하면

psql: FATAL: Ident authentication failed for user "my-ubuntu-username"

블로그 게시물을 확인하십시오 .

답변:


128

두 가지 방법을 사용할 수 있습니다. 둘 다 사용자 데이터베이스를 생성해야 합니다.

기본적으로 psql은 사용자와 동일한 이름으로 데이터베이스에 연결합니다. 그래서 "사용자의 데이터베이스" 를 만드는 규칙이 있습니다. 그리고 사용자가 하나의 데이터베이스 만 필요로한다면 그 규칙을 어길 이유가 없습니다. 우리가 사용하게 될 mydatabase예제 데이터베이스 이름으로.

  1. createuser 및 createdb를 사용 하여 데이터베이스 이름을 명시 할 수 있습니다.

    $ sudo -u postgres createuser -s $USER
    $ createdb mydatabase
    $ psql -d mydatabase
    

    아마 그것을 완전히 생략하고 모든 명령이 사용자 이름으로 기본 설정되도록해야 할 것입니다.

    $ sudo -u postgres createuser -s $USER
    $ createdb
    $ psql
    
  2. SQL 관리 명령 사용 및 TCP를 통한 비밀번호로 연결

    $ sudo -u postgres psql postgres
    

    그리고 psql 셸에서

    CREATE ROLE myuser LOGIN PASSWORD 'mypass';
    CREATE DATABASE mydatabase WITH OWNER = myuser;
    

    그런 다음 로그인 할 수 있습니다.

    $ psql -h localhost -d mydatabase -U myuser -p <port>
    

    포트를 모르는 경우 postgres사용자 로 다음을 실행하여 언제든지 가져올 수 있습니다 .

    SHOW port;
    

    또는,

    $ grep "port =" /etc/postgresql/*/main/postgresql.conf
    

사이드 노트 : postgres사용자

사용자를 수정 하지 않는 것이 좋습니다 postgres.

  1. 일반적으로 OS에서 잠겨 있습니다. 누구도로 운영 체제에 "로그인"해서는 안됩니다 postgres. 으로 인증하려면 루트가 있어야합니다 postgres.
  2. 일반적으로 암호로 보호되지 않으며 호스트 운영 체제에 위임합니다. 이것은 좋은 것 입니다. 이것은 일반적으로 postgresSQL Server의 PostgreSQL에 해당하는 것으로 로그인 SA하려면 기본 데이터 파일에 대한 쓰기 액세스 권한이 있어야 함을 의미합니다. 그리고 그것은 어쨌든 당신이 일반적으로 혼란을 일으킬 수 있음을 의미합니다.
  3. 이 기능을 비활성화하면 명명 된 수퍼 유저를 통한 무차별 대입 공격의 위험이 제거됩니다. 수퍼 유저의 이름을 숨기고 숨기면 장점이 있습니다.

슈퍼 유저가 아닌 DB 슈퍼 유저 (-s)를 사용하면 문제가 발생하지 않는다는 것을 알고 있습니다. 다음 질문은 DB 사용자가 슈퍼 사용자가 아니더라도 실행할 수있는 작업입니다.
Hartmut P.

필자의 경우 : $ sudo -u postgres createuser -s $ USER를 사용하여 사용자를 만든 후 다음을 사용하여 암호를 구성해야합니다. ALTER USER myuser WITH PASSWORD 'mypass'; (다음으로 postgres에 로그인 한 후 : sudo -u postgres psql)
negrotico19

명령을 sudo -u postgres psql postgres어떻게 이해해야 합니까? 이해 sudo, 수단 루트 권한을 -u postgres수단은 사용자로 로그인 postgres, psql연결하는 명령입니다 postgresql,하지만 마지막은 무슨 postgres일을?
yuqli

42

기본적으로 postgres 사용자를 사용해야합니다.

sudo -u postgres psql postgres

1
당신은 sudo를를 사용할 수없는 경우 또는이 작업을 수행 : "SU 포스트 그레스"다음 "psql의"
다니엘 카츠

24

발생한 오류는 your-ubuntu-username이 유효한 Postgres 사용자가 아니기 때문입니다.

사용할 데이터베이스 사용자 이름을 psql에 알려야합니다.

psql -U postgres

연결할 데이터베이스를 지정해야 할 수도 있습니다.

psql -U postgres -d <dbname>

1
"psql -U postgres"를 시도했는데 같은 오류가 발생했습니다. 아직 데이터베이스를 만들지 않고 새로 설치했습니다.
user61734

psql -U myuser -d mydb완벽하게 작동하지만 psql -U myuser피어 인증을 사용하려고합니다. 감사합니다!
inf3rno

5

"일반"사용자 (postgres 아님)로 데이터베이스에 연결할 수도 있습니다.

postgres=# \connect opensim Opensim_Tester localhost;

Password for user Opensim_Tester:    

You are now connected to database "opensim" as user "Opensim_Tester" on host "localhost" at port "5432"

3

데이터베이스 클라이언트가 TCP / IP로 연결하고 pg_hba.conf에 ident auth를 구성한 경우 identd가 설치되어 실행 중인지 확인하십시오. "localhost"에 연결하는 로컬 클라이언트 만있는 경우에도 필수입니다.

또한 요즘에는 localhost에 연결하는 클라이언트를 환영하기 위해 Postgresql에 대해 identd가 IPv6을 활성화 해야 할 수도 있습니다 .


3

postgres 사용자 또는 우리가 만든 다른 사용자로 로그인하는 것의 주요 차이점은 postgres 사용자를 사용할 때 호스트를 -h 로 지정할 필요가 없고 대신 다른 사용자에 대해 지정할 필요가 없다는 것입니다 .

postgres 사용자로 로그인

$ psql -U postgres 

다른 사용자로 생성 및 로그인

# CREATE ROLE usertest LOGIN PASSWORD 'pwtest';
# CREATE DATABASE dbtest WITH OWNER = usertest;
# SHOW port;
# \q

$ psql -h localhost -d dbtest -U usertest -p 5432

GL

출처

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.