programing

psql: FATAL: 역할 "postgres"가 존재하지 않습니다.

javajsp 2023. 5. 29. 09:43

psql: FATAL: 역할 "postgres"가 존재하지 않습니다.

저는 포스트그레스 초보자입니다.

저는 postgres.app for mac을 설치했습니다.psql 명령어를 가지고 놀다가 실수로 postgres 데이터베이스를 떨어뜨렸습니다.안에 뭐가 들어 있었는지 모르겠어요.

저는 현재 튜토리얼을 작성하고 있습니다: http://www.rosslaird.com/blog/building-a-project-with-mezzanine/

그리고 나는 꼼짝 못합니다.sudo -u postgres psql postgres

메시지: 오류메지:psql: FATAL: role "postgres" does not exist

어떤 psql

/Applications/Postgres.app/Contents/MacOS/bin/psql

이것이 바로 우리가 만든 것입니다.psql -l

                                List of databases
    Name    |   Owner    | Encoding | Collate | Ctype |     Access privileges     
------------+------------+----------+---------+-------+---------------------------
 user       | user       | UTF8     | en_US   | en_US | 
 template0  | user       | UTF8     | en_US   | en_US | =c/user                  +
            |            |          |         |       | user      =CTc/user      
 template1  | user       | UTF8     | en_US   | en_US | =c/user                  +
            |            |          |         |       | user      =CTc/user      
(3 rows)

그럼 제가 취해야 할 조치는 무엇입니까?psql과 관련된 모든 것을 삭제하고 모든 것을 다시 설치하시겠습니까?

도와주셔서 감사합니다!

참고: 홈브루를 사용하여 포스트그를 설치한 경우 아래 @user3402754의 설명을 참조하십시오.

오류 메시지는 누락된 데이터베이스를 말하는 이 아니라 누락된 역할을 말하는 것입니다.나중에 로그인 프로세스에서 누락된 데이터베이스로 인해 오류가 발생할 수도 있습니다.

하지만 첫 번째 단계는 누락된 역할을 확인하는 것입니다.내부 출력은 무엇입니까?psql\du다음과 .

                              List of roles
 Role name |            Attributes             | Member of 
-----------+-----------------------------------+-----------
 postgres  | Superuser, Create role, Create DB | {}        

이 있는 이 하나 .superuser그러면 당신은 문제가 있습니다 :-)

해당 항목이 있으면 해당 항목을 사용하여 로그인할 수 있습니다.그리고 당신의 결과물을 보고 있습니다.\l:대한 입니다.user에서.template0그리고.template1.postgres그래서 나는 당신의 설정이 단순하게 사용된다고 생각합니다.user슈퍼 유저로서.따라서 다음 명령을 사용하여 로그인할 수 있습니다.

sudo -u user psql user

한다면user실제로 DB Superuser는 다른 DB Superuser와 그를 위해 비어 있는 비공개 데이터베이스를 만들 수 있는 것입니다.

CREATE USER postgres SUPERUSER;
CREATE DATABASE postgres WITH OWNER postgres;

하지만 당신의 postgres.app 설정은 이것을 하지 않는 것처럼 보이므로, 당신도 하지 말아야 합니다.자습서를 간단히 조정합니다.

MAC의 경우:

  1. 홈브루 설치
  2. brew install postgres
  3. initdb /usr/local/var/postgres
  4. /usr/local/Cellar/postgresql/<version>/bin/createuser -s postgres또는/usr/local/opt/postgres/bin/createuser -s postgres최신 버전을 사용할 것입니다.
  5. 수동으로 합니다. postgres 파일:pg_ctl -D /usr/local/var/postgres start

시작할 때 서버를 시작하려면 다음과 같이 하십시오.

  • mkdir -p ~/Library/LaunchAgents
  • ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
  • launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

설정이 . 를 사용하여 하십시오. 다음을 사용하여 로그인합니다.psql -U postgres -h localhost또는 GUI에 PgAdmin을 사용합니다.

으로 사용자는 " " 입니다.postgres로그인 암호가 없습니다.

다음과 같은 더 많은 기사를 보려면 이 사이트를 확인하십시오. https://medium.com/ @Nithanaroy/설치-postgres-on-mac-18f017c5d3f7

핵심은 "Mac용 postgres.app을 설치했습니다."입니다.이 응용 프로그램은 로컬 Postgre를 설정합니다.역할 이름이 로그인(짧은) 이름과 동일한 데이터베이스 슈퍼유저를 사용하여 SQL을 설치합니다.

Postgres.app이 처음 시작될 때 $USER 데이터베이스를 생성합니다. 이 데이터베이스는 psql의 기본 데이터베이스로 지정되지 않은 경우에 사용됩니다.기본 사용자는 암호가 없는 $USER입니다.

스크립트 일부스예로 만든 )pgdump 및 가 Linux의 있다고 합니다.postgres.

로컬 설치를 좀 더 전통적으로 보이게 하고 다음과 같은 문제를 한 번만 수행하면 됩니다.

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

그것은 그 역할들을 치명적으로 만들 입니다: "포스트그레스"는 존재하지 않습니다.

createuser postgres --interactive

아니면 슈퍼유저 포스트글을 만드는 것만으로도.

createuser postgres -s

그리고 2023년에 이곳에 와서 최신 macOS(macOS Monterey)에서 최신 Postgres와 함께 작동하는 것이 무엇인지 궁금하다면,

다음을 따릅니다.

brew install postgresql
createuser -s postgres
brew services restart postgresql

이 실할때발다니합을 할 때 합니다.initdb 사용자와 ㅠㅠㅠㅠㅠㅠㅠpostgrespostgres가 있는 사용자 --username=postgres또는-U postgres.

그러면 initdb를 실행하는 데 사용한 시스템의 사용자 계정으로 데이터베이스 클러스터가 생성되고 수퍼유저 권한이 부여됩니다.

이 문제를 해결하려면 다음 이름의 새 사용자를 만듭니다.postgres옵으로라는 --superuser 사용createuserPostgres와 함께 제공되는 유틸리티.이유티는에확에서 찾을 수 .bin 예 예: 예)

createuser --superuser postgres

사용자 지정 호스트 이름 또는 포트가 있는 경우 적절한 옵션을 설정해야 합니다.

initdb에 의해 생성된 다른 사용자 계정을 삭제하는 것을 잊지 마십시오.

brew에서 postgres를 설치한 경우 터미널에서 다음을 실행합니다.

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

먼저 사용자를 생성해야 합니다.

sudo -u postgres createuser --superuser $USER

데이터베이스를 작성한 후:

sudo -u postgres createdb $USER

$USER시스템 사용자 이름으로.

여기에서 전체 솔루션을 확인할 수 있습니다.

설정을 해제해야 했습니다.$PGUSER:

$ unset PGUSER
$ createuser -s postgres

이 코드는 저에게 효과가 있었습니다.

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

그것은 여기에서 왔습니다: http://talk.growstuff.org/t/fatal-role-postgres-does-not-exist/216/4 .

Brew에서 Postgres를 설치하고 Apple Silicon(M1) Mac을 사용하는 경우 터미널에서 다음을 실행합니다.

/opt/homebrew/opt/postgresql/bin/createuser -s postgres

Intel(x86) Mac을 사용하는 경우 터미널에서 다음을 실행합니다.

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

명령줄에서 이 작업을 실행하면 수정됩니다.

/Applications/Postgres.app/Contents/Versions/9.4/bin/createdb <Mac OSX Username Here>

기사는 동일한 문제를 해결하는 데 도움이 되었습니다.psql: FATAL: role “postgres” does not exist.

나는 mac을 사용하고 있어서 터미널에 다음 명령을 입력했습니다.

createuser -s postgres

그리고 그것은 저에게 효과가 있었습니다.

이것은 나에게 효과가 있었습니다.

사용자-s 게시글 생성

참고: 맥 카탈리나를 사용하고 있습니다.

도커를 사용하지 않는지 확인합니다.POSTGRES_USER=something_else는 표준 에서 Postgre 표이준이변수를의사기이름 Postgre 알을다니문입때기.(기본값은 SQL 관사자용리:postgres).

나의 경우, 나는 다른 사용자를 나의 특정 데이터베이스로 설정하기 위해 이 변수를 사용하고 있었지만, 그것은 당연히 메인 Postgre를 변경하게 되었습니다.SQL 사용자.

는 이이붙가 DB니다라는 이름의 를 가지고 있습니다.postgres나고끝 brew install postgresql그리고.brew services start postgresql기본적으로 이렇게 psql을 열 수 있습니다.

psql postgres

그런 다음 psql 콘솔에 이와 같은 이름을 가진 사용자를 추가할 수 있습니다.

CREATE USER postgres

그리고 슈퍼 유저를 원한다면, 우리는 추가할 수 있습니다.SUPERUSER마지막에

m1 칩의 경우, 홈브루를 통해 postgresql 패키지를 설치하지 않은 경우 다음을 포함하여 터미널에 설치합니다.

brew install postgre

그런 다음 다음 사용자 이름을 수동으로 만듭니다.

/opt/homebrew/bin/createuser -s <username> 

당신의 오류는 아마도 수정되었을 것입니다; 그러나 만약 당신이 오류가 발생한다면.

FATAL: 데이터베이스 "데이터베이스 이름"이 없습니다.

그런 다음 다음 방법으로 데이터베이스를 수동으로 만들어야 합니다.

/opt/homebrew/bin/createdb -U <username>  <databasename>    

를 하는 중postgres데이터베이스는 별로 중요하지 않습니다. 이데베이비있데목의스적단은히순이베를 위한 입니다.postgres연결할 수 있는 일종의 "집"을 가진 사용자입니다. 필요할 수 있습니다.

명령을 하여 다시 할 수 .CREATE DATABASE postgres;

질문에 언급된 튜토리얼은 다음과 같이 작성되지 않았습니다.postgres.app으로 PostgrePostgre는 PostgrePostgre와는 로, 일유의 경우 PostgrePostgreSQL,postgres.app전용으로 운영되는 서비스가 아닌 일반 애플리케이션처럼 보이려고 합니다.postgres일반 사용자와 다른 권한을 가진 사용자. postgres.app사용자 자신의 계정으로 실행 및 관리됩니다.

이에: 그서이명대신에령래::sudo -u postgres psql -U postgres에 더 입니다: 그냥발행것이 postgres.app의에.psql사용자 이름과 일치하는 데이터베이스에 자동으로 연결되고 슈퍼유저와 동일한 이름의 DB 계정으로 연결되므로 권한에 따라 모든 작업을 수행할 수 있습니다.

이것이 나를 위해 그것을 고쳐준 유일한 사람입니다.

createuser -s -U $USER

나는 우분투와 많은 패키지를 설치했고 그것과 충돌했습니다.

저에게 맞는 답은 다음과 같습니다.

sudo -i -u postgres-xc
psql

저는 오늘 비슷한 문제에 직면했는데, 사실 사용자 이름이 무엇인지 확신할 수 없었습니다.두 . 에는 여기두있다니에 . 엔터프라이즈 환경에서 시스템 관리자 액세스 권한이 없는 경우postgres 회사 이 "" " " " " "로 됩니다.postgres관리자 사용자 이름.를 통해 하는 경우 (으(으)ㄹ 수 .Homebrew그것은 반드시 일어날 것입니다.하고 사용자 를 수행합니다.

brew services start postgresql

그리고나서

echo $USER

postgres 사용자의 사용자 이름이 표시됩니다.

Mac에서, 실행

createuser -s postgres

터미널에서 작업 중입니다.

도커 컨테이너를 실행한 후 바로 이 문제가 발생하면 컨테이너를 폐기하고 다시 만들어 보십시오.그것으로 해결되었습니다.

docker-compose down
docker-compose up --force-recreate

이렇게 하면 데이터베이스가 다음으로 재생성됩니다.postgresuser

홈브루를 통해 새로운 맥(M1)과 최신 포스트그레스(14.0)를 설치하면 이 주제에서 도움이 되는 것은 아무것도 없었지만 포스트그레스를 다시 설치하면 다음과 같은 도움이 되었습니다.

brew services stop postgresql
rm -rf /opt/homebrew/var/postgres/*
brew reinstall postgresql
initdb --locale=C -E UTF-8 /opt/homebrew/var/postgres
brew services restart postgresql

그러니까 기적 같은 일이...

그러면 그냥:

psql -d postgres

MAC(M1) 사용자이고 HomeBrew를 사용하여 Postgres를 설치한 경우 다음 단계를 수행합니다.

  1. Postgres를 사용하여 합니다.which psql
  2. 그런 다음 명령을 실행합니다./opt/homebrew/bin/createuser -s postgres 번째 이 " " "일 경우/opt/homebrew/bin/psql

이 아이디어는 Postgres 설치 위치를 사용하여 'postgres'라는 사용자를 만드는 것입니다.따라서 Postgres의 위치에 따라 명령을 변경해야 할 수도 있습니다.

Ubuntu 시스템에서 Postgre를 제거했습니다.SQL을 다시 설치했습니다.모든 데이터베이스가 복원됩니다.이것으로 저는 문제를 해결했습니다.

조언 - 데이터베이스 백업을 안전하게 사용하십시오.

칩 및 3, m1 과홈버전 3.4.9의,createuser특정 패키지의 Cellar 내부로 이동합니다.이것은 나에게 효과가 있었습니다./opt/homebrew/Cellar/postgresql@12/12.10_1/bin/createuser -s postgres

맥락

여기서 보지 못한 사례에 대한 답변을 추가합니다. 이는 동일한 시스템에 여러 사용자가 있고 postgres 서비스를 사용하려는 사용자가 시스템에 postgres를 설치한 사용자가 아닌 경우의 에지 케이스입니다.

내가 시도한 것

다른 유사한 명령 중에서도 다음과 같은 명령이 모두 실패했습니다.

createuser -s [your username]
# createuser: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: FATAL:  role "[your username]" does not exist
createuser -s postgres
# createuser: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: FATAL:  role "[your username]" does not exist
sudo -u postgres createuser --superuser [your username]
# sudo: unknown user: postgres
# sudo: error initializing audit plugin sudoers_audit
psql -U postgres
# psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: FATAL:  role "postgres" does not exist

이유

는 둘 다 없기 입니다.postgres 또는 할역또는[your username](명령줄에서 후아미라고도 함)가 포스트에 있습니다.

해결책

이러한 에지의 경우 먼저 postgres를 설치한 사용자와 로그인해야 했습니다.

sudo su - [username that installed postgres]

그런 다음 새 사용자의 역할을 만듭니다.

createuser -s [your username]

터미널로 이동합니다.postgres 셸에서 나와 터미널에서 postgresql이 실행되고 있는지 확인합니다.이제 터미널에서 다음 명령을 실행합니다.

createuser -s postgres

psql-l은 데이터베이스 목록을 반환하기 때문에 여기서 sudo가 필요하지 않다고 생각합니다.이것은 initdb가 postgres 사용자가 아닌 사용자의 현재 사용자 아래에서 실행되었음을 알려줍니다.

다음을 수행할 수 있습니다.

psql

자습서를 계속합니다.

A를 추천합니다.많은 응용 프로그램들이 이것이 존재할 것으로 예상할 수 있기 때문에 postgres 사용자와 db를 생성하는 H의 일반적인 포인트.

간단한 설명:

PostgreSQL은 운영 체제에 대한 관리 액세스 권한으로 실행되지 않습니다.대신 일반 사용자와 함께 실행되며 피어 인증을 지원하기 위해(연결하려는 OS에 문의) 초기화 프로세스를 실행하는 사용자와 함께 사용자 및 DB를 생성합니다.이 경우 일반 사용자입니다.

언급URL : https://stackoverflow.com/questions/15301826/psql-fatal-role-postgres-does-not-exist