Postgres 사용자가 존재하지 않습니까?


92

방금 Postgres를 설치하고 1-2 시간 동안 다양한 구성을 수정했습니다.

나는 postgres-user로 변경할 수 없다는 것에 갇혀 있습니다.

$ su - postgres 다음 오류가 발생합니다. su: unknown login: postgres

$ sudo -u postgres psql 다음 오류가 발생합니다. sudo: unknown user: postgres

이러한 시도는 일반 사용자로 수행됩니다. 루트로 시도하면 똑같은 결과가 나타납니다. OS X에서 Homebrew를 통해 postgres를 설치했으며 지침을 여러 번 읽었습니다.


psql을 실행하려고합니까?
danielM

예, 적절한 postgres사용자 로 실행하고 싶습니다 .
krystah

일부 Mac OS X 버전에서는 일부 설치 방법으로 사용자가 postgres_대신 생성되었다고 생각합니다 . 후행 밑줄에 유의하십시오. 또한 사용자 (또는 설치 관리자)가 실제로 PostgreSQL 인스턴스를 생성하고 데이터베이스를 시작 했습니까?
Craig Ringer 2014 년

1
postgres사용자 로 전환 할 수 없었습니다 . postgresql-server패키지 설치 후 문제를 해결했습니다 .
세르지오郝海东冠状病六四事件法轮功

답변:


89

psql: 기본 사용자 이름으로 로그인합니다.

psql -U postgres: postgres 사용자로 로그인합니다.

Sudo는 나에게 필요한 것 같지 않습니다.

OS X postgres 데이터베이스에 Postgres.app을 사용합니다. 설치가 제대로 작동하고 데이터베이스 서버가 제대로 실행되었는지 확인해야하는 번거 로움이 사라졌습니다. 여기에서 확인하세요 : http://postgresapp.com

편집 : 주장 사용을 수정 한 @Erwin Brandstetter에 대한 크레딧.


8
Brew를 사용하여 설치했는데 postgres 또는 _postgres (내가 볼 수있는 한)라는 사용자를 만들지 않았으므로 실패했습니다. @kangkyu 솔루션을 설명하고 문제를 안내합니다 - 당신이 다음 포스트 그레스 사용자가없는 가정 : psql postgrespsql -d postgres.
notapatch

21

에 의해 psql --help데이터베이스 이름에 대한 옵션을 설정하지 않은 경우 ( -d옵션 없이 ) 사용자 이름이되고, 그렇지 않으면 -U데이터베이스 사용자 이름도 사용자 이름이됩니다.

그러나 initdb(첫 번째 데이터베이스를 만들기 위해) 명령에 의해 데이터베이스 이름으로 사용자 이름이 없습니다. 라는 데이터베이스가 postgres있습니다. 첫 번째 데이터베이스는 데이터 저장 영역이 초기화 될 때 항상 initdb 명령에 의해 생성됩니다. 이 데이터베이스를 postgres라고합니다.

따라서 사용자 이름이라는 다른 데이터베이스가없는 경우 psql -d postgrespsql 명령이 작동하도록해야합니다. 그리고 그것은 -d기본적으로 옵션을 제공하는 것 같습니다 psql postgres.

사용자 이름과 동일한 다른 데이터베이스 이름을 만든 경우 (로 수행해야 함 createdb) 명령 psql만 수행 할 수 있습니다 . 그리고 그것은 brew에 의해 컴퓨터 사용자 이름으로 설정된 첫 번째 데이터베이스 사용자 이름 인 것 같습니다.

psql -d <first database name> -U <first database user name>

또는,

psql -d postgres -U <your machine username>
psql -d postgres

기본적으로 작동합니다.


17

OS X는 시스템 계정 이름 앞에 "_"를 붙이는 경향이 있습니다. 사용중인 OS X 버전을 말하지 않지만 적어도 10.8 및 10.9에서는 _postgres 사용자가 기본 설치에 존재합니다. 당신이 할 수 없다는 점에 유의 su가 암호를 가지고 있지 않기 때문에, (루트 제외)이 계정. sudo -u _postgres반면에는 잘 작동합니다.


감사! 이것이 제가 찾던 답입니다. 사용자 이름을 "postgres"로 변경하기 위해 할 수있는 일이 있습니까? _postgres 사용자로 로그인하면 "_postgres"사용자가 존재하지 않는다고 불평하는 psql이 발생합니다. 다른 데이터베이스의 백업 파일을 사용하여 깨끗한 postgres 인스턴스를 복원하려고합니다
Chris Reyes-he-him

1
@ChrisReyes 시스템 계정의 이름을 변경하면 해당 계정을 사용하는 시스템 구성 요소가 손상 될 수 있으므로 적극 권장합니다. "postgres"라는 이름으로 다른 사용자 계정을 만들어 사용할 수 있지만, 제가 이해하는 것이 맞다면 (내가 아닐 수도 있습니다), postgres 데이터베이스 내의 사용자 계정 이 _postgres라는 이름이 아니라는 것입니다. AIUI DB 내의 계정 이름은 시스템 계정 이름과 별개이므로 "_postgres"시스템 계정으로 DB 인스턴스를 실행하고 "postgres"데이터베이스 계정으로 해당 DB를 여는 데 문제가 없습니다.
Gordon Davisson


4
psql -U postgres

db 이름 : postgres 및 사용자 이름 : postgres의 경우 잘 작동했습니다. 따라서 sudo를 작성할 필요가 없습니다.

그리고 다른 db의 경우 시도해 볼 수 있습니다.

psql -U yourdb postgres

Postgres 도움말에서 제공되는 것처럼 :

psql [OPTION]... [DBNAME [USERNAME]]

내 경우 : $ psql -U postgres출력을 생성 psql: FATAL: role "postgres" does not exist하지만 psql postgres작동합니다.
Frozen Flame

4

내가 가진 kryshah 정확히 같은 오류를 얻을 수 su - postgressudo -u postgres psql . DanielM의 대답은 오류도 제공합니다.

설정이 잘못되었을 때 출력

그러나 przbabu의 의견에서 대답하십시오.

masi$ psql
psql: FATAL:  database "masi" does not exist
masi$ psql -U postgres
psql: FATAL:  role "postgres" does not exist
masi$ psql postgres
psql (9.4.1)
Type "help" for help.

이 문제의 일부는 OSX의 소유자 설정에있을 수 있습니다.

masi$ ls -al /Users/
total 0
drwxr-xr-x   7 root      admin  238 Jul  3 09:50 .
drwxr-xr-x  37 root      wheel 1326 Jul  2 19:02 ..
-rw-r--r--   1 root      wheel    0 Sep 10  2014 .localized
drwxrwxrwt   7 root      wheel  238 Apr  9 19:49 Shared
drwxr-xr-x   2 root      admin   68 Jul  3 09:50 postgres
drwxr-xr-x+ 71 masi      staff 2414 Jul  3 09:50 masi

하지만 일이 sudo chown -R postgres:staff /Users/postgres있습니다 chown: invalid user: ‘postgres:staff’.

요컨대 이것은 문제의 해결책이 아닙니다. postgres 설치에서 제공하는 도구를 사용하여 사용자 및 데이터베이스를 만듭니다.

올바른 설정 및 출력을 얻으려면

postgres 설치 후 데이터베이스 시스템에 새 사용자를 추가하는 특정 명령이 있습니다. initdb 후 여기에 설명 된대로 다음을 실행합니다.

createuser --pwprompt postgres
createdb -Opostgres -Eutf8 masi_development
psql -U postgres -W masi_development

항상 비밀번호 요청을 방지하기 위해 여기에 설명 된 세 가지 선택 사항이 있습니다 .


1

나를 위해 이것은 macOS의 솔루션이었습니다 psql 다시 설치

brew install postgres

PostgreSQL 서버 시작

pg_ctl -D /usr/local/var/postgres start

DB 초기화

initdb /usr/local/var/postgres

이 명령에서 오류가 발생하면 이전 데이터베이스 파일을 rm하고 위의 명령을 다시 실행하십시오.

rm -r /usr/local/var/postgres

새 데이터베이스 만들기

createdb postgres_test
psql -W postegres_test

이 db에 로그인하고 여기에서 사용자를 생성하여 로그인 할 수 있습니다.


0

해결책은 간단합니다.
루트로 로그인
한 후 다음을 수행합니다.

su - postgres

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