터미널에서 Postgresql에 액세스

터미널에서 Postgresql에 액세스

최근 Raspberry Pi에 Postgresql을 설정한 후 고급 사용자가 아닌 계정을 만들었습니다. 처음에는 설정하기 위해 다음을 입력했습니다.

psql

터미널에서 다음을 실행하십시오.

createuser pi -P --interactive

나는 새로운 역할을 생성하기 위해 데이터베이스 Y를 생성하기 위해 슈퍼유저 Y에 대해 N을 응답합니다.

Create database test;

이제 간단히 psql을 사용하려고 하면

psql

알겠어요

pi@raspberrypi:~ $ psql psql: FATAL:  database "pi" does not exist

psql 테스트로 이동하여 거기에 데이터베이스를 생성할 수 있지만 이 동작의 원인이 무엇인지 알고 싶습니다.

터미널이 자동으로 Pi 사용자 자격 증명을 postgresql에 전달합니까, 아니면 시스템의 Pi 계정을 사용하여 로그인합니까?

답변1

psqlPostgresql 서버에 연결하는 데 사용하려는 명령을 표시하지 않았습니다 . 하지만 그 정보가 없어도 무슨 일이 일어나고 있는지 설명할 수 있을 것 같습니다.

명령에 사용자를 지정 하지 않으면 psql현재 로그인한 사용자 이름을 사용하려고 시도합니다. 데이터베이스를 지정하지 않으면 사용자와 동일한 이름을 가진 데이터베이스를 로드하려고 시도합니다.

나타나는 오류는 database "pi" does not exist데이터베이스를 로드할 수 없음을 나타냅니다 pi. 귀하가 게시한 질문에서 사용자 이름 pi과 데이터베이스 생성을 언급하셨습니다 test. 다음 명령 test에 로드 데이터베이스를 지정 해야 합니다 .psql

psql --dbname=test

pi사용자로 로그인 하지 않은 경우 psql다음 명령에 사용자 이름을 전달해야 합니다.

psql --username=pi --dbname=test

이 방법이 모두 작동하지 않으면 psql질문에 명령을 게시해 주시면 무슨 일이 일어나고 있는지 더 잘 알 수 있습니다.

답변2

나는 이 문제를 다음 방법으로 해결했습니다: sudo su postgres

SQL

데이터베이스 파이를 생성합니다.

\큐

출구

그런 다음 pi 계정에서 psql을 사용하면 pi 데이터베이스에 저장됩니다.

그렇지 않으면 psql을 실행할 때 연결할 데이터베이스를 지정해야 합니다. (단지 psql을 실행했다면 데이터베이스 pi(유닉스 사용자 이름)에 연결하려고 한다고 생각합니다.)

pi 계정에서 이 테스트 데이터베이스에 연결하려면 다음을 수행하십시오.

psql --db이름=테스트

이렇게 하면 psql이 pi 데이터베이스에 연결을 시도하지 않습니다.

이것이 누군가에게 도움이 되기를 바랍니다.

관련 정보