Postgresql 관리자 로그인 설정

2023. 7. 9. 23:49DB/postgresql

이 글을 쓰는 시점에서 postgresql 최신 버전 패키지는 버전이 15 이다.

 

설치한 패키지는 다음과 같다.

~$ dpkg -l | grep postgres
ii  postgresql                 15+250.pgdg120+1    all          object-relational SQL database (supported version)
ii  postgresql-15              15.3-1.pgdg120+1    amd64        The World Most Advanced Open Source Relational Database
ii  postgresql-client-15       15.3-1.pgdg120+1    amd64        front-end programs for PostgreSQL 15
ii  postgresql-client-common   250.pgdg120+1       all          manager for multiple PostgreSQL client versions
ii  postgresql-common          250.pgdg120+1       all          PostgreSQL database-cluster manager

 

최초 설치 후 커맨드라인 클라이언트인 psql 에서 postgres 계정으로 로그인을 시도하면 peer 인증 실패가 발생한다.

$ psql -U all --password
암호: 
psql: 오류: "/var/run/postgresql/.s.PGSQL.5432" 소켓으로 서버 접속 할 수 없음: 치명적오류:  사용자 "all"의 peer 인증을 실패했습니다.

$ psql -U postgres
psql: 오류: "/var/run/postgresql/.s.PGSQL.5432" 소켓으로 서버 접속 할 수 없음: 치명적오류:  사용자 "postgres"의 peer 인증을 실패했습니다.

$ psql -U postgres --password
암호: 
psql: 오류: "/var/run/postgresql/.s.PGSQL.5432" 소켓으로 서버 접속 할 수 없음: 치명적오류:  사용자 "postgres"의 peer 인증을 실패했습니다.

 

/etc/postgresql/15/main/pg_hba.conf 에서 peer 로 되어 있는 부분을 trust 로 변경해야 한다. (로컬 사용 기준)

 

변경 전)

.
.
.

# DO NOT DISABLE!
# If you change this first entry you will need to make sure that the
# database superuser can access the database using some other method.
# Noninteractive access to all databases is required during automatic
# maintenance (custom daily cronjobs, replication, and similar tasks).
#
# Database administrative login by Unix domain socket
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            scram-sha-256
host    replication     all             ::1/128                 scram-sha-256

변경 내역)

# Database administrative login by Unix domain socket
local   all             postgres                                trust
                                                                ^^^^^ (여기)

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer

 

변경 후에는 postgresql 서비스를 재시작해준다.

sudo service postgresql restart

 

postgres 계정으로 패스워드 없이 로그인될 수 있는 것을 알 수 있다.

/etc/postgresql/15/main$ psql -U postgres
psql (15.3 (Debian 15.3-1.pgdg120+1))
도움말을 보려면 "help"를 입력하십시오.

postgres=#

psql 은 postgresql 의 관리자 콘솔이다. postgresql 설치 시에 기본적으로 생성되는 postgres 계정으로 로그인 한 후에는 내장명령인

\?

\h

으로 각각 사용가능한 도움말을 볼 수 있다.

postgres=# \?
-----------------------------------------------------------------------
(결과)

일반
  \copyright             PostgreSQL 사용법 및 저작권 정보 표시
  \crosstabview [칼럼들] 쿼리를 실행하고, 피봇 테이블 형태로 자료를 보여줌
  \errverbose            최대 자세히 보기 상태에서 최근 오류를 다 보여줌
  \g [(OPTIONS)] [FILE]  쿼리 실행 (결과는 지정한 파일로, 또는 |파이프로);
                         \g 명령에서 인자가 없으면 세미콜론과 같음
  \gdesc                 쿼리를 실행하지 않고 그 결과 칼럼과 자료형을 출력
  \gexec                 쿼리를 실행하고, 그 결과를 각각 실행 함
  \gset [PREFIX]         쿼리 실행 뒤 그 결과를 psql 변수로 저장
  \gx [(OPTIONS)] [FILE] \g 명령과 같으나, 출력을 확장 모드로 강제함
  \q                     psql 종료
  \watch [SEC]           매 초마다 쿼리 실행

도움말
  \? [commands]          psql 역슬래시 명령어 설명
  \? options             psql 명령행 옵션 도움말 보기
  \? variables           psql 환경 설정 변수들에 설명 보기
  \h [NAME]              SQL 명령 구문 도움말, 모든 명령을 표시하려면 * 입력

쿼리 버퍼
  \e [FILE] [LINE]       외부 편집기로 쿼리 버퍼(또는 파일) 편집
  \ef [FUNCNAME [LINE]]  외부 편집기로 해당 함수 내용 편집
  \ev [VIEWNAME [LINE]]  외부 편집기로 해당 뷰 정의 편집
  \p                     쿼리 버퍼의 내용 표시
  \r                     쿼리 버퍼 초기화(모두 지움)
  \s [FILE]              기록 표시 또는 파일에 저장
  \w FILE                쿼리 버퍼를 파일에 기록

입력/출력
  \copy ...              클라이언트 호스트에 있는 자료를 SQL COPY 명령 실행
  \echo [-n] [STRING]    문자열을 표준 출력에 기록 (-n 줄바꿈 없음)
  \i FILE                파일에서 명령 실행
  \ir FILE               \i 명령과 같으나, 경로가 현재 위치 기준 상대적
  \o [FILE]              모든 쿼리 결과를 파일 또는 |파이프로 보냄
  \qecho [-n] [STRING]   문자열을 \o 출력 스트림에 기록 (-n 줄바꿈 없음)
  \warn [-n] [STRING]    문자열을 stderr에 기록 (-n 줄바꿈 없음)

조건문
  \if EXPR               조건문 시작
  \elif EXPR             else if 구문 시작
  \else                  조건문의 그 외 조건
  \endif                 조건문 끝

정보보기
  (옵션: S = 시스템 개체 표시, + = 추가 상세 정보)
  \d[S+]                 테이블, 뷰 및 시퀀스 목록
  \da[S]  [PATTERN]      집계 함수 목록
  \dA[+]  [PATTERN]      접근 방법 목록
  \dAc[+] [AMPTRN [TYPEPTRN]]  연산자 클래스 목록
  \dAf[+] [AMPTRN [TYPEPTRN]]  연산자 부류 목록
  \dAo[+] [AMPTRN [OPFPTRN]]   연산자 부류 소속 연산자 목록
  \dAp[+] [AMPTRN [OPFPTRN]]   연산자 가족에 포함된 지원 함수 목록
  \db[+]  [PATTERN]      테이블스페이스 목록
  \dc[S+] [PATTERN]      문자셋 변환자 목록
  \dconfig[+] [PATTERN]  환경설정 매개변수 목록
  \dC[+]  [PATTERN]      자료형 변환자 목록
  \dd[S]  [PATTERN]      다른 곳에서는 볼 수 없는 객체 설명을 보여줌
  \dD[S+] [PATTERN]      도메인 목록
  \ddp    [PATTERN]      기본 접근권한 목록
  \dE[S+] [PATTERN]      외부 테이블 목록
  \des[+] [PATTERN]      외부 서버 목록
  \det[+] [PATTERN]      외부 테이블 목록
  \deu[+] [PATTERN]      사용자 매핑 목록
  \dew[+] [PATTERN]      외부 데이터 래퍼 목록
  \df[anptw][S+] [FUNCPTRN [TYPEPTRN ...]]
                         [agg/normal/procedure/trigger/window 단일] 함수 목록
  \dF[+]  [PATTERN]      텍스트 검색 구성 목록
  \dFd[+] [PATTERN]      텍스트 검색 사전 목록
  \dFp[+] [PATTERN]      텍스트 검색 파서 목록
  \dFt[+] [PATTERN]      텍스트 검색 템플릿 목록
  \dg[S+] [PATTERN]      롤 목록
  \di[S+] [PATTERN]      인덱스 목록
  \dl[+]                 큰 개체 목록, \lo_list 명령과 같음
  \dL[S+] [PATTERN]      프로시져 언어 목록
  \dm[S+] [PATTERN]      materialized 뷰 목록
  \dn[S+] [PATTERN]      스키마 목록
  \do[S+] [OPPTRN [TYPEPTRN [TYPEPTRN]]]
                         연산자 목록
  \dO[S+] [PATTERN]      collation 목록
  \dp     [PATTERN]      테이블, 뷰 및 시퀀스 액세스 권한 목록
  \dP[itn+] [PATTERN]    파티션 릴레이션 목록 [인덱스/테이블만] [n=nested]
  \drds [ROLEPTRN [DBPTRN]] per-database 롤 설정 목록
  \dRp[+] [PATTERN]      복제 발행 목록
  \dRs[+] [PATTERN]      복제 구독 목록
  \ds[S+] [PATTERN]      시퀀스 목록
  \dt[S+] [PATTERN]      테이블 목록
  \dT[S+] [PATTERN]      데이터 형식 목록
  \du[S+] [PATTERN]      롤 목록
  \dv[S+] [PATTERN]      뷰 목록
  \dx[+]  [PATTERN]      확장 모듈 목록
  \dX     [PATTERN]      확장 통계 정보 목록
  \dy[+]  [PATTERN]      이벤트 트리거 목록
  \l[+]   [PATTERN]      데이터베이스 목록
  \sf[+]  함수이름       함수 정의 보기
  \sv[+] 뷰이름          뷰 정의 보기
  \z      [PATTERN]      \dp와 같음

큰 개체
  \lo_export LOBOID FILE 큰 개체를 파일로 저장
  \lo_import FILE [COMMENT]
                         파일에서 큰 개체 가져오기
  \lo_list[+]            큰 개체 목록
  \lo_unlink LOBOID      큰 개체 삭제

출력 형식
  \a                     정렬되지 않은 출력 모드와 정렬된 출력 모드 전환
  \C [STRING]            테이블 제목 설정 또는 값이 없는 경우 설정 안 함
  \f [STRING]            unaligned 출력에 대해 필드 구분자 표시 또는 설정
  \H                     HTML 출력 모드 전환(현재 off)
  \pset [이름 [값]]      테이블 출력 옵션 설정
                         (border|columns|csv_fieldsep|expanded|fieldsep|
                         fieldsep_zero|footer|format|linestyle|null|
                         numericlocale|pager|pager_min_lines|recordsep|
                         recordsep_zero|tableattr|title|tuples_only|
                         unicode_border_linestyle|unicode_column_linestyle|
                         unicode_header_linestyle)
  \t [on|off]            행만 표시(현재 off)
  \T [STRING]            HTML <table> 태그 속성 설정 또는 비었는 경우 설정 안 함
  \x [on|off|auto]       확장된 출력 전환 (현재 off)

연결
  \c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}
                         새 데이터베이스에 접속 (현재 "postgres")
  \conninfo              현재 데이터베이스 접속 정보 보기
  \encoding [ENCODING]   클라이언트 인코딩 표시 또는 설정
  \password [USERNAME]   사용자 암호를 안전하게 변경

운영 체제
  \cd [DIR]              현재 작업 디렉터리 변경
  \getenv PSQLVAR ENVVAR 환경 변수값을 psql 변수값으로
  \setenv NAME [VALUE]   환경 변수 지정 및 해제
  \timing [on|off]       명령 실행 시간 전환(현재 off)
  \! [COMMAND]           셸 명령 실행 또는 대화식 셸 시작

변수
  \prompt [TEXT] NAME    사용자에게 내부 변수를 설정하라는 메시지 표시
  \set [NAME [VALUE]]    내부 변수 설정 또는 미지정 경우 모든 변수 목록 표시
  \unset NAME            내부 변수 설정 해제(삭제)
(END)
postgres=# \h
-----------------------------------------------------------------------
(결과)

사용 가능한 도움말:
  ABORT                            ALTER SYSTEM                     CREATE FOREIGN DATA WRAPPER      CREATE USER MAPPING              DROP ROUTINE                     NOTIFY
  ALTER AGGREGATE                  ALTER TABLE                      CREATE FOREIGN TABLE             CREATE VIEW                      DROP RULE                        PREPARE
  ALTER COLLATION                  ALTER TABLESPACE                 CREATE FUNCTION                  DEALLOCATE                       DROP SCHEMA                      PREPARE TRANSACTION
  ALTER CONVERSION                 ALTER TEXT SEARCH CONFIGURATION  CREATE GROUP                     DECLARE                          DROP SEQUENCE                    REASSIGN OWNED
  ALTER DATABASE                   ALTER TEXT SEARCH DICTIONARY     CREATE INDEX                     DELETE                           DROP SERVER                      REFRESH MATERIALIZED VIEW
  ALTER DEFAULT PRIVILEGES         ALTER TEXT SEARCH PARSER         CREATE LANGUAGE                  DISCARD                          DROP STATISTICS                  REINDEX
  ALTER DOMAIN                     ALTER TEXT SEARCH TEMPLATE       CREATE MATERIALIZED VIEW         DO                               DROP SUBSCRIPTION                RELEASE SAVEPOINT
  ALTER EVENT TRIGGER              ALTER TRIGGER                    CREATE OPERATOR                  DROP ACCESS METHOD               DROP TABLE                       RESET
  ALTER EXTENSION                  ALTER TYPE                       CREATE OPERATOR CLASS            DROP AGGREGATE                   DROP TABLESPACE                  REVOKE
  ALTER FOREIGN DATA WRAPPER       ALTER USER                       CREATE OPERATOR FAMILY           DROP CAST                        DROP TEXT SEARCH CONFIGURATION   ROLLBACK
  ALTER FOREIGN TABLE              ALTER USER MAPPING               CREATE POLICY                    DROP COLLATION                   DROP TEXT SEARCH DICTIONARY      ROLLBACK PREPARED
  ALTER FUNCTION                   ALTER VIEW                       CREATE PROCEDURE                 DROP CONVERSION                  DROP TEXT SEARCH PARSER          ROLLBACK TO SAVEPOINT
  ALTER GROUP                      ANALYZE                          CREATE PUBLICATION               DROP DATABASE                    DROP TEXT SEARCH TEMPLATE        SAVEPOINT
  ALTER INDEX                      BEGIN                            CREATE ROLE                      DROP DOMAIN                      DROP TRANSFORM                   SECURITY LABEL
  ALTER LANGUAGE                   CALL                             CREATE RULE                      DROP EVENT TRIGGER               DROP TRIGGER                     SELECT
  ALTER LARGE OBJECT               CHECKPOINT                       CREATE SCHEMA                    DROP EXTENSION                   DROP TYPE                        SELECT INTO
  ALTER MATERIALIZED VIEW          CLOSE                            CREATE SEQUENCE                  DROP FOREIGN DATA WRAPPER        DROP USER                        SET
  ALTER OPERATOR                   CLUSTER                          CREATE SERVER                    DROP FOREIGN TABLE               DROP USER MAPPING                SET CONSTRAINTS
  ALTER OPERATOR CLASS             COMMENT                          CREATE STATISTICS                DROP FUNCTION                    DROP VIEW                        SET ROLE
  ALTER OPERATOR FAMILY            COMMIT                           CREATE SUBSCRIPTION              DROP GROUP                       END                              SET SESSION AUTHORIZATION
  ALTER POLICY                     COMMIT PREPARED                  CREATE TABLE                     DROP INDEX                       EXECUTE                          SET TRANSACTION
  ALTER PROCEDURE                  COPY                             CREATE TABLE AS                  DROP LANGUAGE                    EXPLAIN                          SHOW
  ALTER PUBLICATION                CREATE ACCESS METHOD             CREATE TABLESPACE                DROP MATERIALIZED VIEW           FETCH                            START TRANSACTION
  ALTER ROLE                       CREATE AGGREGATE                 CREATE TEXT SEARCH CONFIGURATION DROP OPERATOR                    GRANT                            TABLE
  ALTER ROUTINE                    CREATE CAST                      CREATE TEXT SEARCH DICTIONARY    DROP OPERATOR CLASS              IMPORT FOREIGN SCHEMA            TRUNCATE
  ALTER RULE                       CREATE COLLATION                 CREATE TEXT SEARCH PARSER        DROP OPERATOR FAMILY             INSERT                           UNLISTEN
  ALTER SCHEMA                     CREATE CONVERSION                CREATE TEXT SEARCH TEMPLATE      DROP OWNED                       LISTEN                           UPDATE
  ALTER SEQUENCE                   CREATE DATABASE                  CREATE TRANSFORM                 DROP POLICY                      LOAD                             VACUUM
  ALTER SERVER                     CREATE DOMAIN                    CREATE TRIGGER                   DROP PROCEDURE                   LOCK                             VALUES
  ALTER STATISTICS                 CREATE EVENT TRIGGER             CREATE TYPE                      DROP PUBLICATION                 MERGE                            WITH
  ALTER SUBSCRIPTION               CREATE EXTENSION                 CREATE USER                      DROP ROLE                        MOVE