pgAdmin3를 사용하여 Ubuntu에서 원격 PostgreSQL 데이터베이스에 연결하는 방법은 무엇입니까?


22

우분투 컴퓨터에 PostgreSQL 데이터베이스를 설정하려고합니다. 원격 컴퓨터에서 pgAdmin3을 사용하여 액세스하고 싶습니다. 이것을 어떻게 설정합니까?

우분투에 PostgreSQL 데이터베이스를 설치했습니다 :

sudo apt-get install postgresql

/etc/postgresql/9.1/main/pg_hba.conf줄 에이 줄이 있습니다.

host    all    all    all    password

모든 IPv4 주소의 연결을 수락해야하며 암호는 일반 텍스트로 보내야합니다 (개발상의 이유 임).

어떤 서비스가 실행 중인지 확인하기 위해이 명령을 실행하면 :

sudo netstat -tulpn

다음 행을 볼 수 있습니다. PostgreSQL이 기본 포트에서 연결을 수락하고 있음을 보여줍니다.

tcp    0    0    127.0.0.1:5432    0.0.0.0:*    LISTEN
3561/postgres

동일한 로컬 네트워크의 원격 컴퓨터에서이 PostgreSQL 서버에 연결하려고하면이 오류 메시지가 나타납니다.

서버가 듣지 않습니다

서버가 연결을 수락하지 않습니다 : 연결 라이브러리가보고합니다

서버에 연결할 수 없습니다 : 연결이 거부되었습니다. 서버가 "10.0.1.7"호스트에서 실행 중이고 포트 5432에서 TCP / IP 연결을 허용합니까?

나는 postgres사용자 이름과 비밀번호없이 사용 했다. 그러나 나는 또한 postgres암호로 시도했다 . 로컬 서버에서 다음을 사용하여 로그인 할 수 있습니다.

sudo -u postgres psql postgres

pgAdmin3를 사용하여 원격 컴퓨터에서 Ubuntu에서 실행되는 PostgreSQL 데이터베이스에 어떻게 연결합니까?

답변:


25

netstat 보고서의 행은 데이터베이스가 들어오는 TCP 연결을 위해 localhost : 5432 (127.0.0.1)에서만 수신하고 있음을 보여줍니다.

Proto Recv-Q Send-Q Local Address   Foreign Address  State   PID/Program name
tcp        0      0 127.0.0.1:5432  0.0.0.0:*        LISTEN  3561/postgres

따라서 pg_hba.conf에 지정한 권한에 관계없이 로컬 tcp 연결 만 허용 할 수 있습니다. pg_hba.conf는 허용 된 연결 만 지정하지만 서비스가 수신 할 인터페이스는 지정하지 않습니다.

서버가 수신하는 주소는 postgresql.conflisten_addresses GUC로 지정됩니다 . 서버가 원격 연결을 수신 *하도록하려면 호스트에서 사용할 수있는 모든 인터페이스에서 수신 하거나 청취 할 IP를 지정해야 합니다.

postgresql 서버가 호스트의 모든 인터페이스를 수신하게하려면 postgresql.conf에 다음 줄이 있어야합니다.

listen_addresses = '*'

하지만 난 이미 지정한 all에서 pg_hba.conf이 모든 IP 주소에서 connetions을 받아 들여야한다, 그래서 ... 파일.
Jonas

아마도 더 명확하게 말할 수 있었을 것입니다. pg_hba는 데이터베이스가 수신하는 내용을 지정하지 않고 허용되는 프로토콜 / db / user / remote-addr 연결 만 지정합니다.
dbenhur 2016 년

좋아, 어떻게 이것을 고칠 수 있습니까? 의견 있으십니까?
Jonas

1
listen_addresses = '*'postgresql.conf에 줄을 넣고 서버를 다시 시작하여 문제를 해결 합니다.
dbenhur

감사합니다.이 문제가 해결되었습니다. 이제 기본 비밀번호에 문제가 생겼습니다. (
Jonas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.