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

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

createuser username

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

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

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



답변

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 설치 방법 등과 같은 세부 정보를 생략하여이 질문에 답하기가 훨씬 더 어려워졌습니다.)


답변

여기에서 지침과 함께 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 버전으로 교체하십시오.


답변

sudo -u postgres createuser -s tom

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


답변

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

sudo -u postgres -i

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

[postgres]$ createuser --interactive

3 번 출구

[postgres]$ exit


답변

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

나는 그 기사에서 당신에 대한 이유 (및 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 명령 을 실행할 수 있습니다 .


답변

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

sudo su-postgres

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


답변

Windows에서 사용 :

C:\PostgreSQL\pg10\bin>createuser -U postgres --pwprompt <USER>

--superuser또는 --createdb적절하게 추가하십시오 .

추가 옵션 은 https://www.postgresql.org/docs/current/static/app-createuser.html 을 참조 하십시오 .