Createuser : 데이터베이스 postgres에 연결할 수 없음 : 치명적 : "tom"역할이 없습니다.


93

Postgres를 처음 설정하려고하는데 데이터베이스를 읽고 만들 수있는 권한이있는 사용자를 만들어야합니다. 그러나 내가 사용할 때 :

createuser username

내 터미널에서 다음 메시지가 나타납니다.

createuser : 데이터베이스 postgres에 연결할 수 없음 : 치명적 : 역할 "tom"이 존재하지 않습니다.

Tom은 내가 지금 로그인 한 Ubuntu 사용자 계정입니다. "postgres"라는 사용자 이름을 생성 한 다음 psql -U psql template1데이터베이스를 생성하고 Rails 앱에 대한 소유자를 할당 할 수 있도록하려고합니다.


정말로 'postgres'사용자를 만들려고합니까? 아니면 Rails 앱의 사용자일까요? 일반적으로 'postgres'사용자가 이미 존재하며 문제는 필요한 작업을 수행하기 위해 연결하는 것입니다.
ostergaard

답변:


133

Ubuntu에 대해 언급 했으므로 Ubuntu에서 apt를 통해 PostgreSQL 패키지를 설치했다고 추측하겠습니다.

그렇다면 postgresPostgreSQL 사용자 계정이 이미 존재하며 peer.NET Framework에서 유닉스 소켓에 대한 인증을 통해 액세스 할 수 있도록 구성되어 있습니다 pg_hba.conf. postgresunix 사용자 로 명령을 실행하면됩니다 . 예 :

sudo -u postgres createuser owning_user
sudo -u postgres createdb -O owning_user dbname

이것은 모두 "Ubuntu PostgreSQL"에 대한 Google의 첫 히트작 인 Ubuntu PostgreSQL 문서에 있으며 수많은 스택 오버플로 질문에서 다룹니다.

(사용중인 OS 및 버전, PostgreSQL 설치 방법 등과 같은 세부 정보를 생략하여이 질문에 답하기가 훨씬 더 어려워졌습니다.)


owning_user를 만든 후이 사용자와 어떻게 연결합니까? 내가 사용하는 기본 사용자, sudo -u postgres psql postgres 연결을 의미합니다. owning_user를 연결하는 방법과 같은 방법?
Jony 2014 년

2
세 가지 옵션. (a) 해당 사용자에 대한 암호를 설정하고 해당 사용자에 대한 인증 pg_hba.conf을 사용하도록 편집 합니다 md5(설명서 참조). (b) 동일한 이름으로 OS 사용자를 만들고 peer인증을 계속 사용합니다 . 또는 (c) 더 고급 인 경우 pg_ident.confOS 사용자가 새 사용자로 로그인 할 수 있도록 매핑을 만듭니다 .
Craig Ringer

67

여기에서 지침과 함께 git gist를 참조하십시오.

이것을 실행하십시오 :

 sudo -u postgres psql

또는

psql -U postgres

Postgres에 들어가기 위해 터미널에서

주의 : Mac을 사용 중이고 위의 두 명령이 모두 실패한 경우 아래 Mac 관련 섹션으로 이동하십시오.

postgres=#

운영

CREATE USER new_username;

참고 : new_username을 만들려는 사용자로 바꾸십시오 (귀하의 경우 tom이 될 사용자).

postgres=# CREATE USER new_username;
CREATE ROLE

해당 사용자가 DB를 생성 할 수 있도록하려면 역할을 수퍼 유저로 변경해야합니다.

postgres=# ALTER USER new_username SUPERUSER CREATEDB;
ALTER ROLE

확인하기 위해 모든 것이 성공적이었습니다.

postgres=# \du
                         List of roles
 Role name |                   Attributes                   | Member of 
-----------+------------------------------------------------+-----------
new_username     | Superuser, Create DB                           | {}
postgres         | Superuser, Create role, Create DB, Replication | {}
root             | Superuser, Create role, Create DB              | {}

postgres=# 

업데이트 / 수정 (Mac 용) :

최근에 Mac에서 비슷한 오류가 발생했습니다.

psql: FATAL: role "postgres" does not exist

이것은 내 설치가 역할 이름이 로그인 (짧은) 이름과 동일한 데이터베이스 수퍼 유저로 설정 되었기 때문입니다.

그러나 일부 Linux 스크립트는 수퍼 유저가 다음과 같은 전통적인 역할 이름을 가지고 있다고 가정합니다. postgres

이 문제를 어떻게 해결 했습니까?

다음을 homebrew실행 하여 설치 한 경우 :

/usr/local/opt/postgres/bin/createuser -s postgres

특정 버전의 postgres를 사용하는 경우 10.5다음을 실행합니다.

/usr/local/Cellar/postgresql/10.5/bin/createuser -s postgres

또는:

/usr/local/Cellar/postgresql/10.5/bin/createuser -s new_username

또는:

/usr/local/opt/postgresql@11/bin/createuser -s postgres

postgres.appMac 용으로 설치 한 경우 다음을 실행하십시오.

/Applications/Postgres.app/Contents/Versions/10.5/bin/createuser -s postgres

추신 : 10.5를 PostgreSQL 버전으로 교체하십시오.


이것은 postgres에 들어가기 위해 노력했습니다 :psql -U postgres
leontalbot

29
sudo -u postgres createuser -s tom 

이것은 관리자가 PostgreSQL 사용자 계정을 생성하지 않은 경우 발생하므로 도움이 될 것입니다. 운영 체제 사용자 이름과 다른 PostgreSQL 사용자 이름이 할당되었을 수도 있습니다.이 경우 -U 스위치를 사용해야합니다.


7

1- 기본 PostgreSQL 사용자 (postgres)로 로그인

sudo -u postgres -i

2- postgres 사용자로. createuser명령을 사용하여 새 데이터베이스 사용자 추가

[postgres]$ createuser --interactive

3 번 출구

[postgres]$ exit

5

귀하의 오류는 공식 문서에 게시됩니다. 이 기사읽을 수 있습니다 .

나는 그 기사에서 당신에 대한 이유 (및 URL 하이퍼 링크)를 복사했습니다.

이는 관리자가 PostgreSQL 사용자 계정을 생성하지 않은 경우에 발생합니다. (PostgreSQL 사용자 계정은 운영 체제 사용자 계정과 다릅니다.) 관리자 인 경우 20 장에서 계정 생성에 대한 도움말을 참조하십시오 . 첫 번째 사용자 계정을 만들려면 PostgreSQL이 설치된 운영 체제 사용자 (일반적으로 postgres)가되어야합니다. 운영 체제 사용자 이름과 다른 PostgreSQL 사용자 이름이 할당되었을 수도 있습니다. 이 경우 -U 스위치를 사용하거나 PGUSER 환경 변수를 설정하여 PostgreSQL 사용자 이름을 지정해야합니다.

목적을 위해 다음을 수행 할 수 있습니다.

1) PostgreSQL 사용자 계정을 만듭니다.

sudo -u postgres createuser tom -d -P

( -P암호를 설정하는 -d옵션, 사용자 이름 'tom'에 대한 데이터베이스 생성을 허용 하는 옵션. 'tom'은 운영 체제 사용자 이름입니다. 이렇게하면 PostgreSQL 명령을 sudoing 없이 실행할 수 있습니다 .)

2) 이제 createdb및 기타 PostgreSQL 명령 을 실행할 수 있습니다 .


1

나도 같은 문제가 있었어, 그냥 이렇게

sudo su-postgres

createuser odoo -U postgres -dRSP #P for password ( odoo 또는 postgres 액세스 권한을 부여 할 사용자 이름 )



0

인증 방법 (ident)을 변경하고 싶지 않고 pg_hba.conf를 엉망으로 만드는 경우 다음을 사용하십시오.

기본 사용자로 처음 로그인

 sudo su - posgres

그런 다음 psql에 액세스하여 로그인 한 이름과 동일한 이름으로 사용자를 만듭니다.

postgres=# CREATE USER userOS WITH PASSWORD 'garbage' CREATEDB;

해당 역할로 사용자를 확인할 수 있습니다.

postgres=#  \du

이를 통해 데이터베이스를 만들고 확인할 수 있습니다.

psql -d dbName
\l
\q

-4

먼저 initdb를 실행해야합니다. 데이터베이스 클러스터와 초기 설정을 생성합니다.

처음으로 postgresql을 구성하는 방법을 참조하십시오 . http://www.postgresql.org/docs/8.4/static/app-initdb.html


5
이것은 완전히 잘못된 것입니다. 사용자가 실행 initdb하지 않았다면보고 된 오류 메시지를 생성하기 위해 데이터베이스 서버가 실행되고 연결을 수락하지 않았을 것입니다. 이 오해의 소지가있는 답변을 삭제하세요. (BTW, 향후 부실 링크가 누적되지 않도록 / docs / current / static /에 링크하십시오)
Craig Ringer
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.