[PostgreSQL] | mac 설치 , 기본 설정 , Port 변경

Hayeon LEE·2024년 3월 27일
0

problem solving

목록 보기
2/2
post-thumbnail

PostgreSQL 설정 중 보안 측면에서 포트 변경이 권장된다는 사실을 알게 되었습니다. 포트를 변경하는 과정에서 'error: connection to server on socket'와 같은 에러가 발생해 이 문제를 해결한 내용을 기록해 보려 합니다. 🐘 🧐

1. 설치 및 실행

brew 설치

brew install postgresql

버전 확인

postgres -V
postgres (PostgreSQL) 14.11 (Homebrew) # 자동으로 최신 버전으로 설치됨

실행

  • 시작
brew services start postgresql
  • 중지
brew services stop postgresql
  • 재시동
brew services restart postgresql

2. 접속 및 설정

접속

psql postgres

사용자 목록을 조회

postgres=# \du
  • Q , \q : 터미널 빠져나오기

사용자 비밀번호를 설정

postgres=# \password 사용자 이름
  • PostgreSQL의 경우 비밀번호가 설정되어 있지 않기 때문에 최초 접속 시 반드시 비밀번호를 설정해야 한다.

새로운 사용자 생성

CREATE USER 사용자 이름 WITH PASSWORD '비밀번호';
CREATE ROLE # 성공시 출력

아래 명령어로 다시 확인해 보면 새로운 사용자가 생성된 것을 확인 할 수 있다.

postgres=# \du

사용자 권한 부여

  • SUPERUSER : 데이터베이스 생성, 삭제, 변경 및 설정 변경
  • CREATEDB : 데이터베이스 생성
  • CREATEROLE : 다른 사용자에 대한 권한을 관리 및 권한 부여
  • LOGIN : 데이터베이스에 연결
  • REPLICATION : 복제 작업

예시

ALTER ROLE 사용자 이름 CREATEDB;
ALTER ROLE # 성공시 출력
ALTER ROLE 사용자 이름 CREATEROLE;
ALTER ROLE # 성공시 출력

데이터베이스 생성

CREATE DATABASE 데이터베이스 명;
CREATE DATABASE # 성공시 출력

데이터 베이스 권한 부여

  • 데이터베이스에 대한 모든 권한을 부여
GRANT ALL PRIVILEGES ON DATABASE 데이터베이스이름 TO 사용자이름;
GRANT # 성공시 출력
  • 사용자가 데이터베이스에 연결할 수 있는 권한
GRANT CONNECT ON DATABASE 데이터베이스이름 TO 사용자이름;
GRANT # 성공시 출력

데이터베이스로 연결

\connect 데이터베이스이름 사용자이름;
You are now connected to database "데이터베이스이름" as user "사용자이름". # 성공시 출력

모든 데이터베이스의 목록을 표시

postgres=# \list

데이터베이스의 Owner 변경

ALTER DATABASE 데이터베이스이름 OWNER TO 사용자이름;

이때 SUPERUSER 권한을 가진 사용자의 계정으로 변경해야 한다.

생성한 사용자로 접속

 psql 데이터베이스이름 -U 사용자이름

터미널에서 빠져나간 뒤 접속한다.


3. DB port 변경 방법

PostgreSQL 접속 시 사용되는 포트 번호5432는 사용자들에게 잘 알려진 포트 번호이므로 보안 취약점이 존재합니다. 따라서 자신만의 고유한 포트 번호를 정해서 사용하는 것을 권장합니다.
출처:네이버클라우드 PostgreSQL 사용 가이드

보안을 위해 port 변경을 권장하고 있기 때문에 변경해 보자!

postgresql.conf 설정파일 열기

vi /경로/postgresql.conf

경로는 시스템마다 다 다르기 때문에 먼저 PostgreSQL 서버에 접속한 뒤 SHOW config_file; 명령어를 실행하면 파일 전체 경로가 출력될 것이다. 이 경로로 postgresql.conf 파일을 열자!

SHOW config_file;

                   config_file
-------------------------------------------------
 /경로/postgresql.conf
(1 row)

해당 파일을 열고 아래로 내려보면 CONNECTIONS AND AUTHENTICATION 부분에서 주석 처리된 port가 보일 것이다.

#----------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#----------------------------------------------------------

# - Connection Settings -

#port = 5432 

...

먼저 i를 눌러 편집모드로 변환한 뒤 port 앞에 있는 #를 지워주고 포트를 변경한 뒤 esc를 눌러 저장하자.

그 다음 :wq로 빠져나온 뒤 다시 아래 명령어로 재시동 시켜준다.

brew services restart postgresql

특정 포트 확인

lsof -i :포트번호
  • 지정된 포트번호로 열려 있는 모든 연결 및 프로세스를 보여준다.
    변경된 포트로 잘 설정되었는지 확인하기 위해 위의 명령어로 확인해준다.
    아무것도 출력하지 않는다면, 해당 포트는 현재 사용되지 않는 것이다...
lsof -PiTCP -sTCP:LISTEN
  • 현재 시스템에서 모든 TCP 연결 중 리스닝 상태인 것들을 보여준다.

포트 변경 후 접속

변경 후, 다시 psql postgres 명령어로 접속하면 아래와 같은 에러가 출력될 것이다.

psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directory
	Is the server running locally and accepting connections on that socket?

필자는 이 부분에서 계속 에러가 나서.. 구글링 해본 결과 포트를 변경한 경우에는 해당 포트를 명시해 주어야 한다는 것을 알았다..!! 휴 😮‍💨

아래 명령어를 실행해 보면 잘 접속된 것을 확인할 수 있을 것이다!! 🙌

psql DB명 -U 유저명 -p 포트번호 

참고 자료

네이버클라우드 PostgreSQL 사용 가이드

[PostgreSQL] Port(포트) 변경 방법

profile
미래의 나를 위한 기록

0개의 댓글