[postgresql] psql : 치명적 : “<user>”데이터베이스가 없습니다.

Mac 용 PostgreSql 앱 ( http://postgresapp.com/ )을 사용하고 있습니다. 과거에 다른 컴퓨터에서 사용했지만 맥북에 설치할 때 문제가 발생합니다. 응용 프로그램을 설치했으며 다음을 실행했습니다.

psql -h localhost

다음을 반환합니다.

psql: FATAL:  database "<user>" does not exist

찾으려는 데이터베이스를 만들기 위해 콘솔을 실행할 수도없는 것 같습니다. 내가 방금 실행할 때도 마찬가지입니다.

psql 

또는 응용 프로그램 드롭 다운 메뉴에서 psql을 시작하면 :

기계 통계 :

  • OSX 10.8.4

  • psql (PostgreSQL) 9.2.4

도움을 주시면 감사하겠습니다.

또한 homebrew를 통해 PostgreSql을 설치하려고 시도했는데 동일한 문제가 발생합니다. 또한 다음과 같은 응용 프로그램 설명서 페이지를 읽었습니다.

Postgres.app가 처음 시작되면 $ USER 데이터베이스가 생성되는데,이 데이터베이스는 아무것도 지정되지 않은 경우 psql의 기본 데이터베이스입니다. 기본 사용자는 $ USER이며 암호는 없습니다.

따라서 응용 프로그램이 $ USER를 생성하지 않는 것 같지만 지금은 여러 번 설치-> 제거-다시 설치했지만 내 컴퓨터에 문제가 있어야합니다.

나는 대답을 찾았지만이 스레드에서 응답 한 사용자가 어떻게 작동하는지 확실하지 않습니다-> Mac에서 Postgresql 실행하기 : 데이터베이스 “postgres”가 존재 하지 않습니다. 다음 명령을 사용하여 psql을 열었습니다.

psql -d template1

누군가 이것이 왜 작동하는지에 대한 설명을 제공 할 때 까지이 답변을 남겨 두지 않을 것입니다.



답변

패키지 관리자가 $ user라는 데이터베이스를 작성하지 못한 것으로 보입니다. 그 이유는

psql -d template1

template1은 postgres 자체에 의해 생성 된 데이터베이스이며 모든 설치에 존재합니다. template1에 로그인 할 수 있으므로 데이터베이스에 의해 일부 권한이 할당되어 있어야합니다. 쉘 프롬프트에서 이것을 시도하십시오 :

createdb

다음으로 로그인 할 수 있는지 확인하십시오

psql -h localhost

이것은 단순히 로그인 사용자를위한 데이터베이스를 만들 것입니다. createdb가 실패하면 자신의 데이터베이스를 만들 수있는 권한이 충분하지 않으며 homebrew 패키지를 수정하는 방법을 알아야합니다.


답변

터미널에서 명령 프롬프트 창에서 명령을 실행하십시오. (psql 내부가 아님) .

createdb <user>

그런 다음 postgres를 다시 실행하십시오.


답변

기본적으로 postgres는 사용자와 이름이 같은 데이터베이스에 연결을 시도합니다. 이 기본 동작을 방지하려면 사용자와 데이터베이스를 지정하십시오.

psql -U Username DatabaseName 


답변

  1. 기본 사용자로 로그인 : sudo -i -u postgres
  2. 새로운 사용자 생성 : createuser --interactive
  3. 역할 이름을 묻는 메시지가 표시되면 Linux 사용자 이름을 입력하고 예를 선택하여 수퍼 유저 질문하십시오.
  4. 여전히 postgres 사용자로 로그인하여 데이터베이스를 작성하십시오. createdb <username_from_step_3>
  5. psql명령 프롬프트 에 다음 을 입력하여 오류가 사라 졌는지 확인 하십시오.
  6. 출력이 표시되어야합니다 psql (x.x.x) Type "help" for help.

답변

기본 template1 데이터베이스를 사용하여 로그인하십시오.

#psql -d template1
#template1=# \l

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

userId로 데이터베이스를 작성하십시오.

template1=# CREATE DATABASE gogasca WITH OWNER gogasca ENCODING 'UTF8';
CREATE DATABASE

종료 후 다시 로그인

template1=# \q
gonzo:~ gogasca$ psql -h localhost
psql (9.4.0)
Type "help" for help.

gogasca=# \l
                                List of databases
   Name    |  Owner  | Encoding |   Collate   |    Ctype    |  Access privileges
-----------+---------+----------+-------------+-------------+---------------------
 gogasca   | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 postgres  | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/gogasca         +
           |         |          |             |             | gogasca=CTc/gogasca
 template1 | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/gogasca         +
           |         |          |             |             | gogasca=CTc/gogasca
(4 rows)


답변

Mac에서 postgresql을 열려고 할 때 같은 오류가 발생했습니다.

psql: FATAL:  database "user" does not exist

이 간단한 명령을 사용하여 해결했습니다.

방법 1

$ createdb --owner=postgres --encoding=utf8 user

그리고 유형

 psql

방법 2 :

psql -d postgres


답변

같은 문제 psql -d postgres가 있었지만 간단 했습니다 (터미널에 명령을 입력하십시오)