postgresql을 처음으로 구성하는 방법은 무엇입니까?


197

방금 postgresql을 설치했으며 설치 중에 암호 x를 지정했습니다. 시도하고 createdb암호를 지정 하려고 하면 메시지가 나타납니다.

createdb : 데이터베이스 postgres에 연결할 수 없습니다 : FATAL : 사용자의 비밀번호 인증에 실패했습니다

동일합니다 createuser.

어떻게 시작해야합니까? 데이터베이스에 사용자로 자신을 추가 할 수 있습니까?



4
이것은 1 년 후 물었던이 질문과 거의 같습니다. 그러나 나는 이것이 위험한 기본 대답을 가지고 있다고 생각합니다 . 사용자를 설정 하지 않아야합니다 postgres. 그것은 SUPostgreSQL 의 것이고 , 그것에 대한 로그인 공격을 위해 열립니다. 다른 수퍼 유저를 작성postgres 하고 루트가있는 UNIX 관리자를 위해 잠금 을 예약하십시오 .
Evan Carroll

답변:


329

다른 답변은 완전히 만족스럽지 않았습니다. 다음은 Xubuntu 12.04.1 LTS의 postgresql-9.1에서 작동 한 것입니다.

  1. postgres 사용자로 기본 데이터베이스에 연결하십시오.

    sudo -u postgres psql 템플릿 1

  2. 사용자 postgres의 비밀번호를 설정 한 다음 psql (Ctrl-D)을 종료하십시오.

    암호화 된 비밀번호 'xxxxxxx'를 가진 ALTER USER postgres;

  3. pg_hba.conf파일을 편집 하십시오.

    sudo vim /etc/postgresql/9.1/main/pg_hba.conf

    postgres 관련 줄에서 "peer"를 "md5"로 변경하십시오.

    로컬 모든      postgres      피어 md5

    실행중인 postgresql 버전을 확인하려면에서 버전 폴더를 찾으십시오 /etc/postgresql. 또한 VIM 대신 Nano 또는 다른 편집기를 사용할 수 있습니다.

  4. 데이터베이스를 다시 시작하십시오.

    sudo /etc/init.d/postgresql 재시작

    (여기에서 작동하는지 확인할 수 있습니다 psql -U postgres).

  5. 귀하와 동일한 이름을 가진 사용자를 작성하십시오 (찾으려면을 입력하십시오 whoami).

    sudo createuser -U postgres -d -e -E -l -P -r -s <my_name>

    이 옵션은 postgresql에게 로그인, 데이터베이스 생성, 새 역할 생성, 수퍼 유저 및 암호화 된 비밀번호를 가진 사용자를 생성하도록 지시합니다. 가장 중요한 것은 -P -E이므로 암호화 할 비밀번호를 입력하라는 메시지가 표시되고 -d를 사용하여을 수행 할 수 있습니다 createdb.

    비밀번호주의 : 먼저 새 비밀번호의 2 배 (새 사용자 용)를 요청한 후 반복 한 다음 postgres 비밀번호 (2 단계에서 지정한 비밀번호)를 한 번 요청합니다.

  6. 다시 pg_hba.conf파일을 편집하고 (위의 3 단계 참조) 다른 사용자 "all"에 관한 행에서 "peer"를 "md5"로 변경하십시오.

    로컬 모든      모든      피어 md5

  7. 4 단계에서와 같이 다시 시작하고 -U postgres없이 로그인 할 수 있는지 확인하십시오.

    psql 템플릿 1

    단순한 작업을 수행하면 사용자 psql와 이름이 같은 기본 데이터베이스 (예 :)에 연결하려고하기 때문에 실패합니다 whoami. template1은 처음부터 여기에있는 관리 데이터베이스입니다.

  8. 이제 createdb <dbname>작동합니다.


이 절차는 우분투 13.10에서도 훌륭하게 작동했습니다. 사용자를 만들 때 5 단계에서 sudo를 기억하십시오.
David den Haring

2
뿐만 아니라 우분투 14.04 LTS에 좋은 일했다
ilhnctn

2
참고로, 라인 입력 pg_hba.conf은 첫 번째 라인이어야합니다. 그렇지 않으면 다른 규칙으로 인해 무시 될 수 있습니다 (F21의 pgsql 9.3.5). postgresql 사용자를 위해 이미 주석 처리 된 행의 주석 처리를 제거하고 변경하는 것이 단순히 수행되지 않는다는 것을 이해하는 데 시간이 걸렸습니다.
dashesy

나는 단지이 있기 때문에이, PG 9.4의 변경이 생각 local all all peer나는 지금 변경 점 3 md5. 확인?
Léo Léopold Hertz 준영

1
2017 년 답변을 업데이트하십시오! PostgreSQL 9.6 및 UBUNTU 16 LTS ... 간단한 방법은 없습니다 ??
피터 크라우스

55

Linux에서 PostgresQL은 일반적으로 루트 사용자가 postgres쉘 (콘솔 또는 ssh)에서 postgres 수퍼 유저로 로그인 할 수 있도록 구성됩니다 .

$ psql -U postgres

그런 다음 평소와 같이 새 데이터베이스를 만듭니다.

CREATE ROLE myuser LOGIN password 'secret';
CREATE DATABASE mydatabase ENCODING 'UTF8' OWNER myuser;

만지지 않고 작동 pg_hba.conf합니다. 네트워크를 통해 일부 GUI 도구를 사용하여이 작업을 수행하려면 엉망이되어야합니다 pg_hba.conf.


Windows에서 작업 중이며 디렉토리에 대해 initdb를 실행했으며 구성 파일이 있습니다. 이제 createdb가 작동하지만 psql 테스트를 수행 할 때 메시지가 표시됩니다. 경고 : 콘솔 코드 페이지 (437)가 Windows 코드 페이지 (1252)와 다릅니다. 8 비트 문자가 올바르게 작동하지 않을 수 있습니다. 자세한 내용은 psql 참조 페이지 "Windows 사용자를위한 참고 사항"을 참조하십시오. 명령이 작동하지 않습니다.
Rohit Banga

7
psql: FATAL: Peer authentication failed for user "postgres"sudo 와도.
피터 크라우스

완벽한 대답은 구성 파일을 다루고 싶지 않았으며 우분투의 PostgreSQL 10.10에서 완벽하게 작동했습니다. 이후에는에 연결할 수 있어야합니다 psql -d mydatatabase -U myuser.
ranu

21

이것은 내 솔루션입니다.

su root
su postgres
psql

4
많은 사이트에서 pg_hba.conf가 postgres 시스템 계정에 대해 postgres db 사용자를 인증하기 때문에 많은 경우에 작동합니다 (피어 방법). 그러나 성공적인 로그인은 궁극적으로 특정 사이트에 대한 pg_hba.conf의 내용에 달려 있습니다.
리드 샌드버그

1
나를 위해 일했다. 첫 번째 줄을로 바꿨습니다 sudo bash.
eje211

나는 이것이 어떻게 도움이되는지 모르겠다. 내 이해로, 이것은 루트와 postgres에 로그인하고 psql을 실행한다. 정확히 무슨 일이 일어나고 있습니까? 감사!
olleh

20

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

  1. createuser가와 CREATEDB를 사용하여 ,

    $ sudo -u postgres createuser --superuser $USER
    $ createdb mydatabase
    $ psql -d mydatabase
  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. 일반적으로 암호로 보호되지 않으며 호스트 운영 체제에 위임됩니다. 이것은 좋은 것입니다 입니다. 이것은 일반적으로 postgresPostgreSQL과 동등한 SQL Server 에 로그인 SA하려면 기본 데이터 파일에 대한 쓰기 액세스 권한이 있어야 함을 의미합니다. 그리고 그것은 당신이 어쨌든 혼란을 일반적으로 망칠 수 있음을 의미합니다.
  3. 이 기능을 비활성화하면 명명 된 수퍼 유저를 통한 무차별 대입 공격의 위험이 사라집니다. 수퍼 유저의 이름을 숨기고 가리는 이점이 있습니다.

첫 번째 방법으로 사용자는 권한이 없습니다. 나는 첫번째 명령 대신 이것을 사용하여 끝났다 :sudo -u postgres createuser -U postgres -d -e -E -l -P -r -s $(whoami)
Fabien Snauwaert

@FabienSnauwaert는 -s사용자를 슈퍼 유저로 만듭니다.
Evan Carroll

16

편집 : 경고 : Evan Carroll이 게시 한 답변을 읽으십시오 . 이 솔루션은 안전하지 않으며 권장되지 않는 것 같습니다.

이것은 표준 Ubuntu 14.04 64 비트 설치에서 효과적 이었습니다.

http://suite.opengeo.org/4.1/dataadmin/pgGettingStarted/firstconnect.html 에서 찾은 작은 수정 사항으로 지침을 따랐습니다 .

  1. postgreSQL을 설치하십시오 (아직 컴퓨터에없는 경우).

sudo apt-get install postgresql

  1. postgres 사용자를 사용하여 psql 을 실행하십시오.

sudo –u postgres psql postgres

  1. postgres 사용자의 새 비밀번호를 설정하십시오.

\password postgres

  1. psql 종료

\q

  1. /etc/postgresql/9.3/main/pg_hba.conf를 편집 하고 변경하십시오 :

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

에:

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

  1. postgreSQL을 다시 시작하십시오 :

sudo service postgresql restart

  1. 새로운 데이터베이스 생성

sudo –u postgres createdb mytestdb

  1. postgres 사용자와 함께 psql을 다시 실행하십시오.

psql –U postgres –W

  1. 기존 데이터베이스를 나열하십시오 (현재 새 데이터베이스가 있어야 함).

\l


1
postgres사용자를 활성화하는 것이 좋지 않다고 생각 하기 때문에 하향 투표했습니다 . stackoverflow.com/a/41604969/124486
에반 캐롤

4
Note: textdb is the database which you are going to explore with 'alex' user 

root@kalilinux:~# sudo su - postgres 
postgres=#  psql   
postgres=#  create database testdb;
postgres=#  create user alex with password 'alex';
postgres=# GRANT ALL PRIVILEGES ON DATABASE testdb TO alex;`enter code here`

3

pg_hba.conf파일 을 업데이트해야 할 수도 있습니다. 이 파일은 사용자가 어떤 IP 주소에서 로그인 할 수 있는지를 제어합니다. postgres 사용자는 기본적으로 꽤 잠겨 있다고 생각합니다.


2
RHEL6.4 및 postgres 8.4의 경우 파일은에 있습니다 /var/lib/pgsql/data/pg_hba.conf. 변경 identtrust대한 host(그리고 local당신이 SSH를 사용하는 경우).
DavidG

3

나처럼 macOS를 실행하고 있다면 postgres 사용자가 없을 수 있습니다.

달릴 때 sudo -u postgres psql 오류가 발생했습니다.sudo: unknown user: postgres

다행히 postgres가 제공하는 실행 파일이 있습니다.

createuser -D /var/postgres/var-10-local --superuser --username=nick
createdb --owner=nick

그런 다음 psql문제없이 액세스 할 수있었습니다 .

psql
psql (10.2)
Type "help" for help.

nick=#

처음부터 새 postgres 인스턴스를 생성하는 경우 다음 단계를 수행하십시오. 기본이 아닌 포트를 사용하여 두 개의 인스턴스를 실행할 수 있습니다.

mkdir /var/postgres/var-10-local
pg_ctl init -D /var/postgres/var-10-local

그런 다음 /var/postgres/var-10-local/postgresql.conf선호하는 포트 5433으로 편집 했습니다.

/Applications/Postgres.app/Contents/Versions/10/bin/postgres -D /Users/nick/Library/Application\ Support/Postgres/var-10-local -p 5433

createuser -D /var/postgres/var-10-local --superuser --username=nick --port=5433
createdb --owner=nick --port=5433

끝난!


2

MacOS에서는 아래 단계를 따라 작동했습니다.

설치 후 처음으로 시스템의 사용자 이름을 얻습니다.

$ cd ~
$ pwd
/Users/someuser
$ psql -d postgres -U someuser

이제 시스템에 로그인했으며 DB를 만들 수 있습니다.

postgres=# create database mydb;
CREATE DATABASE
postgres=# create user myuser with encrypted password 'pass123';
CREATE ROLE
postgres=# grant all privileges on database mydb to myuser;
GRANT

0

설치 디렉토리로 이동하여이 파일 "pg_env.bat"을 실행하십시오. 따라서 bin 폴더로 이동 한 후 pgAdmin.exe를 실행하십시오. 의심 할 여지없이 작동해야합니다!

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