반응형
설치·접속: 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)"은 사실상 같은 개념이고, createuser는 CREATE 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반응형
'명령어 > DB' 카테고리의 다른 글
| [PostgreSQL] pg_dump 단일 DB 백업 (0) | 2026.07.30 |
|---|---|
| [PostgreSQL] dropdb 데이터베이스 삭제 (0) | 2026.07.30 |
| [PostgreSQL] createdb 새 데이터베이스 생성 (0) | 2026.07.30 |
| [PostgreSQL] "too many clients already" — max_connections와 커넥션 풀링 (1) | 2026.07.30 |
| [PostgreSQL] psql 터미널에서 DB에 접속한다 (0) | 2026.07.30 |