블루베리소르베
[입문] 04. PostgreSQL 접속하기 (DBeaver) 본문
DBeaver를 사용한 PostgreSQL 접속
앞선 포스팅에서는 CLI 환경에서 사용가능한 psql 을 통한 PostgreSQL 접속방법을 알아보았다.
하지만 글로만 이루어진 환경에서 마우스도 없이 따분하게 작업을 하다 보면 어딘가 아쉽기 마련이다.
그래서 이번에 소개할 접속방법은 화려한 그래픽 유저 인터페이스를 통한 접속이다.
GUI를 사용한 접속은 여러가지 이점이 많다. 작업이 간결해지고, 몇 번의 클릭 만으로도 원하는 정보를 쉽게 찾아낼 수 있다. 그리고 무엇보다 보기에 좋다.
DBeaver 설치하기
DBeaver는 아파치 2 라이센스에 따라 배포되는 "무료" 오픈소스 데이터베이스 프로그램이다. 공식 홈페이지에 따르면 DBeaver는 80여 개의 DBMS에 대한 접속과 관리를 지원한다. 오라클과 MySQL, MSSQL, MariaDB, PostgreSQL 등 한 번쯤 들어보았을 DBMS 뿐만 아니라, 세상에 존재하는지도 몰랐을 DBMS까지 폭넓게 지원하고 있다.
그럼 본격적으로 설치를 진행해보자.
아래의 링크를 통해서 DBeaver 커뮤니티 공식 사이트에 접속할 수 있다.
공식 사이트의 Download 섹션에서 자신의 OS에 맞는 DBeaver 인스톨러를 다운로드하면 된다..
다운로드한 파일을 실행하면 다음과 같은 화면을 만날 수 있다.

이제 우리는 다음 버튼만을 열심히 누를 것이다. 물론 중간에 설치 위치를 바꿔주어도 전혀 문제가 없다.
하지만 개인적으로는 나중에 삭제를 해야 하거나 업데이트를 진행할 경우 문제가 될 수 있으니 기본 위치에 설치를 진행하는 것을 추천한다.
우리가 즐겨하는 LOL이나 발로란트, 오버워치, 배틀그라운드의 설치보다 훨씬 더 쉽기 때문에 설치과정은 과감하게 생략하겠다. 위에서 말했듯이 다음 버튼만 열심히 누르면 된다.
설치가 완료되었다면, DBeaver를 실행시켜 보자.
정상 설치가 되었다면 이런 깔끔한 화면이 나올 것이다.
그러면 이제 전선코드 모양 아이콘을 눌러 PostgreSQL에 연결해 보겠다.

새 데이터베이스 연결을 누르면 다음과 같은 창이 팝업 된다.
이 창의 아이콘들은 오픈소스인 만큼 그때그때 순서가 다르게 보인다.
우리는 PostgreSQL에 접속할 예정이니, 파란색 코끼리를 선택해 준다.
코끼리 아이콘을 더블 클릭 하면 화면이 전환되며 접속정보를 입력할 수 있는 창이 나온다.
이때 우리가 가장 신경을 써야 할 부분이 Host 부분과 Port 부분이다.
기본적으로 localhost, 5432로 설정되어있지만 이 블로그를 보며 따라 했다면 PostgreSQL은 Linux에 설치되어 있을 것이다. GUI환경을 사용하기 위해 해당 설치는 Windows나 Mac OS에서 진행했을 것이기 때문에 Linux에 바로 연결할 수는 없을 것이다.
우선 Host 부분에는 PostgreSQL이 동작하고 있는 서버의 IP를 입력해 주어야 한다. IP를 모르겠다면, 다음 명령어를 사용해 확인할 수 있다.
psql -d test -c "select inet_server_addr()"
해당 명령어는 psql을 사용해 PostgreSQL에 접속한 서버의 IP를 반환하는 명령어이다. 만약 아무 값도 반환되지 않는다면 localhost에 연결되어 있는 것이다.
IP를 확인했다면 이제 Port도 확인해 보자.
psql -d test -c "select setting from pg_settings where name = 'port'"
Port는 PostgreSQL의 system_catalog 중 하나인 pg_settins 카탈로그 뷰를 사용해서 조회할 수 있다.
psql 인터널 인터페이스를 사용한다면 "-C "옵션 뒤의 명령어를 입력하여 확인할 수 있다.
접속하고자 하는 서버의 IP와 Port를 알아내었으면, 이제 Database를 알아보자.
따로 Database를 생성하지 않았다면 기본설치된 PostgreSQL의 Database는 postgres가 생성되어 있다.
User 또한 postgres가 기본적으로 생성되어 있을 것이다.
하지만 여기서 Password는 우리가 지정을 해 준 적이 없다. 왼쪽 하단의 Test Connections 버튼을 눌러보아도 연결이 정상적으로 진행되지 않을 것이다.
우리는 psql을 통한 접근으로 postgres 유저의 password를 수정해주어야 한다. psql에서 password를 변경하는 명령어는 "\password [User명]" 이다.
psql -d postgres
postgres=# \password postgres
Enter new password for user "postgres":
Enter it again:
postgres=#
비밀번호를 변경했다면 이제 다시 연결을 시도해 보자. 아마도 큰 문제없이 연결될 것이다.
만약 JDBC 드라이버와 관련된 팝업창이 뜬다면 다운로드 버튼을 눌러주면 된다.
Port의 개념을 알고 있는 사람이라면, 중간에 설명하지 않은 과정이 있다는 것을 알고 있을 것이다.
바로 방화벽(firewall)이다. 방화벽에 PostgreSQL의 Port로 사용한 5432가 등록되어 있지 않다면 우리는 그 Port를 사용해 PostgreSQL에 접속할 수 없다. 문지기가 문을 지키고 안 열어 주는 것이다.
방화벽은 root계정으로만 조작이 가능하며, 다음 명령어를 사용하여 방화벽에 Port를 등록할 수 있다.
[root@localhost ~]# firewall-cmd --add-port=5432/tcp --permanent
success
[root@localhost ~]# firewall-cmd --reload
success
그럼 이제 다시 연결을 시도해 보자. 그러면 연결이 거절되었다는 애러가 나올 것이다.
이 애러는 우리가 아직 PostgreSQL을 설치한 이후 설정을 끝내지 않았기 때문에 발생하는 애러이다.
psql로 접속하는 것은 전혀 문제가 없지만, DBeaver는 접속이 거절되는 이유는 리스너와 관련이 있다.
PostgreSQL은 기동 되면서부터 외부에서의 접속요청을 감지하는 리스너를 가동한다.
이러한 리스너와 관련된 파라미터는 postgresql.conf 파일에 정의되어 있다. 파라미터의 이름은 listen_addresses로, 초기에는 localhost만이 접근 가능하도록 설정이 되어있다. 하지만 우리는 Linux서버에 Windows의 DBeaver를 사용해 접근하고자 하는 것 이기에 이를 수정해 주어야만 정상적으로 연결이 된다. localhost를 모든 IP로 변경해 주자. 다음과 같이 수정해주면 된다.
#listen_addresses = 'localhost'
listen_addresses = '*'
이 파라미터를 수정하고 나면 반드시 PostgreSQL을 재기동해 주어야 한다. 재기동을 위해서는 pg_ctl 명령어를 사용하여야 하는데, 이는 /usr/pgsql-버전/bin 디렉토리에 존재한다.
해당 디렉토리로 이동하여 pg_ctl restart를 진행해 주자.
pg_ctl restart
waiting for server to shut down.... done
server stopped
waiting for server to start....
done
server started
이제 다시 연결을 확인해 보자.

또다시 애러가 발생할 것이다. 이번에는 조금 더 힌트를 주고 있다.
뭔가 pg_hba.conf라는 파일을 찾아보아야 할 것 같다.
pg_hba.conf는 postgresql.conf와 동일한 디렉토리에 위치하고 있다.
기본적인 설정이 되어있지만, DBeaver가 설치된 서버에서 시도되는 연결은 허용되어있지 않기 때문이다.
pg_hba.conf 파일은 이처럼 PostgreSQL로 들어오는 접근을 관리하는 역할을 한다.
pg_hba.conf파일의 가장 마지막 줄에 다음을 추가해주고 저장한다.
host all all 0.0.0.0/0 trust
모든 IP 대역대를 열어주는 것이 결코 보안상 바람직한 방법은 아니지만, 입문자의 입장에서는 걸리적거리는 허들일 뿐이다. 물론 위와 같이 설정을 한다고 하여도 따로 보안을 위한 암호화 프로그램을 사용한다면 전혀 문제가 없으니 안심해도 된다.
pg_hba.conf를 수정하였다면 파라미터를 재반영 시켜 주어야 한다.
pg_ctl reload 명령어를 통해 설정값을 반영시켜 주자.
pg_ctl reload
server signaled
설정값이 재반영 되었다면, 이제 다시 연결 테스트를 진행해 보자.
이번에는 문제없이 연결될 것이다.
이제 연결이 완료되었다.
그러면 이제 마지막으로 psql에서 했던 것처럼 SQL을 통해 현재 시간을 알아보도록 하자.
만들어진 커넥션에 오른쪽 마우스를 눌러 메뉴를 열어주고, SQL 편집기 -> 새 SQL 편집기를 클릭한다.
그러면 우측에 창이 하나 생길 것이다.
그 창은 앞으로 우리가 SQL을 편집하는 데 사용할 메모장으로, 그곳에 " select now(); "를 입력한다.
그리고 Ctrl + Enter 키를 눌러 실행시킨다.
이제 아래쪽의 Results 영역을 보면 정상적으로 PostgreSQL의 서버에 접속해 현재 시간을 가져온 것을 확인할 수 있다.
마치며
psql보다 훨씬 복잡하지만, DBeaver는 GUI로 구성되어 직관적이고, 텍스트 편집 기능을 제공하여 장문의 SQL을 작성하는데 효율적인 도구이다. 물론 pgAdmin4와 같은 다른 프로그램들도 사용할 수 있겠지만, 개인적으로는 DBeaver가 지원하는 80여 개의 DBMS가 가진 범용성을 이유로 많이 사용하고 있다.
이제 PostgreSQL의 설치와 접속에 대한 포스팅이 마무리되었다.
입문자의 입장에서는 여기까지 오는 길이 그렇게 쉽지는 않았을 것이라고 생각한다. 하지만 이제부터는 지금까지 구성해놓은 환경을 가지고 실제 PostgreSQL을 사용해 볼 것이다.
지금까지 보다 훨씬 재미있는 작업들이 기다리고 있으니 포기하지 말고 한 걸음씩 나아가보도록 하자.
'DATA > PostgreSQL' 카테고리의 다른 글
[입문] 05. 기본 RDBMS 용어 및 개념 알아보기 (0) | 2023.02.13 |
---|---|
[입문] 03. PostgreSQL 접속하기 (psql) (2) | 2022.12.27 |
[입문] 02. PostgreSQL 설치 (0) | 2022.12.27 |
[입문] 01. PostgreSQL이란? (2) | 2022.12.27 |
[001] PostgreSQL 13.3 공식문서 번역 - 머릿말 (0) | 2021.06.06 |