명령어/DB

[PostgreSQL] createuser 역할(role) 생성

jykim23 2026. 7. 30. 22:13
반응형

설치·접속: PostgreSQL 설치와 접속

부제: 데이터베이스 유저(역할)를 셸에서 권한과 함께 만든다

createuser --echo appuser                       # 기본 로그인 역할 생성
createuser --pwprompt appuser                   # 비밀번호를 입력받아 생성
createuser --no-createdb --no-superuser reporter # 권한을 좁혀서 생성
SELECT pg_catalog.set_config('search_path', '', false);
CREATE ROLE appuser NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN NOREPLICATION NOBYPASSRLS;

PostgreSQL에서 "유저"와 "역할(role)"은 사실상 같은 개념이고, createuserCREATE ROLE ... LOGIN을 감싼 래퍼다. 위 출력처럼 아무 옵션 없이 만들면 로그인만 가능하고 슈퍼유저·DB 생성·역할 생성 권한은 모두 꺼진 안전한 기본값으로 생성된다. 실무에서는 애플리케이션용 계정을 최소 권한으로 만들고 필요한 테이블에만 GRANT로 권한을 붙이는 방식이 표준이다. 비밀번호는 --pwprompt로 대화식 입력을 받아야 셸 히스토리에 남지 않는다.

이렇게도 쓴다

비밀번호를 대화식으로 입력받아 앱 계정을 만든다. (히스토리에 안 남음)

createuser --pwprompt --no-createdb --no-createrole appuser

 

읽기 전용 리포팅 계정을 만든다. (권한 최소화)

createuser --no-createdb --no-createrole --no-superuser reporter

 

DB·역할 생성이 가능한 관리용 계정을 만든다.

createuser --createdb --createrole deployer

 

리플리케이션 전용 계정을 만든다. (pg_basebackup용)

createuser --replication --pwprompt replica_user

 

계정을 만들고 곧바로 읽기 권한을 부여한다. (psql 조합)

createuser reporter && psql -d shop -c "GRANT SELECT ON ALL TABLES IN SCHEMA public TO reporter;"

 

원격 서버에 대화식으로 권한을 물어가며 만든다. (--interactive)

createuser -h db.internal -U postgres --interactive newdev
반응형