PostgreSQL 설정 중 보안 측면에서 포트 변경이 권장된다는 사실을 알게 되었습니다. 포트를 변경하는 과정에서 'error: connection to server on socket'와 같은 에러가 발생해 이 문제를 해결한 내용을 기록해 보려 합니다. 🐘 🧐
brew install postgresql
postgres -V
postgres (PostgreSQL) 14.11 (Homebrew) # 자동으로 최신 버전으로 설치됨
brew services start postgresql
brew services stop postgresql
brew services restart postgresql
psql postgres
postgres=# \du
postgres=# \password 사용자 이름
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
ALTER DATABASE 데이터베이스이름 OWNER TO 사용자이름;
이때 SUPERUSER 권한을 가진 사용자의 계정으로 변경해야 한다.
psql 데이터베이스이름 -U 사용자이름
터미널에서 빠져나간 뒤 접속한다.
PostgreSQL 접속 시 사용되는 포트 번호5432는 사용자들에게 잘 알려진 포트 번호이므로 보안 취약점이 존재합니다. 따라서 자신만의 고유한 포트 번호를 정해서 사용하는 것을 권장합니다.
출처:네이버클라우드 PostgreSQL 사용 가이드
보안을 위해 port 변경을 권장하고 있기 때문에 변경해 보자!
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
변경 후, 다시 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 포트번호