programing

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

muds 2023. 5. 1. 22:07
반응형

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

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

포스트그레스 사용자로 변경할 수 없는 상태입니다.

$ su - postgres합니다.su: unknown login: postgres

$ sudo -u postgres psql합니다.sudo: unknown user: postgres

이러한 시도는 일반 사용자로 수행됩니다.루트로 시도해도 정확히 같은 결과를 얻을 수 있습니다.저는 OS X에 Homebrew를 통해 Postgres를 설치한 적이 있으며 설명서를 여러 번 읽었습니다.

psql 이름으로 합니다.

psql -U postgres 사용자 Postgres로 합니다.

저는 스도가 필요하지 않은 것 같습니다.

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

편집: @Erwin Brandstetter가 제 주장을 수정한 것에 대한 공로를 인정합니다.

타고psql --help데이터베이스 이름에 대한 옵션을 설정하지 않은 경우(없이)-d옵션) 만약 당신이 하지 않았다면, 그것은 당신의 사용자 이름일 것입니다.-U데이터베이스 사용자 이름도 당신의 사용자 이름 등이 될 것입니다.

지만하에 의해.initdb(첫 번째 데이터베이스 만들기) 명령에는 데이터베이스 이름과 같은 사용자 이름이 없습니다.이름이 지정된 데이터베이스가 있습니다.postgres첫 번째 데이터베이스는 데이터 저장 영역이 초기화될 때 항상 initdb 명령에 의해 생성됩니다. 이 데이터베이스를 postgres라고 합니다.

따라서 사용자 이름이 지정된 다른 데이터베이스가 없는 경우 다음 작업을 수행해야 합니다.psql -d postgres하려면 .psql 명령을 사용하십시오.그리고 그것은 주는 것처럼 보입니다.-d은 " 기적으로옵션본"입니다.psql postgres작동하기도 합니다.

사용자 이름과 동일한 다른 데이터베이스 이름을 작성한 경우 다음을 사용하여 수행해야 합니다.createdb) 그런 다음 명령할 수 있습니다.psql오직. 그리고 첫 번째 데이터베이스 사용자 이름이 당신의 기계 사용자 이름으로 설정되어 있는 것 같습니다.

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

아니면,

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

기본적으로 작동합니다.

OS X는 시스템 계정 이름 앞에 "_"를 붙이는 경향이 있습니다. 사용 중인 OS X 버전이 무엇인지는 알 수 없지만 적어도 10.8 및 10.9에서는 _postgres 사용자가 기본 설치에 존재합니다.▁to다'▁be▁note▁▁able▁you▁that없니습수다.su암호가 없기 때문에 이 계정(루트 제외)으로 이동합니다. sudo -u _postgres반면에, 잘 작동할 것입니다.

저에게 이것은 psql을 다시 설치하는 macOS의 솔루션이었습니다.

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에 로그인되고 여기에 로그인할 사용자를 생성할 수 있습니다.

psql -U postgres

db name: postgres & username: postgres의 경우 저에게 잘 작동했습니다.그래서 당신은 sudo를 쓸 필요가 없습니다.

그리고 다른 DB의 경우, 당신은 시도할 수 있습니다.

psql -U yourdb postgres

Postgres 도움말에 나와 있는 대로:

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

저는 크리샤와 정확히 같은 오류를 받습니다.su - postgres그리고.sudo -u postgres psqlDaniel M의 대답은 또한 오류를 줍니다.

잘못된 설정 시 출력

하지만 프르바바의 논평에서 대답하세요.

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

항상 암호 요청을 방지하려면 여기에 설명된 것처럼 세 가지 옵션을 선택할 수 있습니다.

여기서의 토론과 답변은 저에게 큰 도움이 되었습니다.

psql: FATAL: 데이터베이스 "<user>"가 존재하지 않습니다.

이를 통해 새 역할을 생성할 수 있습니다. 이름을 지정할 수 있습니다.

sudo adduser <new_user_role>

솔루션은 간단합니다.
루트로 로그인합니다.
이후:

su - postgres

psql

언급URL : https://stackoverflow.com/questions/21122598/postgres-user-does-not-exist

반응형