IT

PostgreSQL에 사용자와 권한 추가하기(CREATE USER, GRANT PERMISSIONS)

紫紅 2023. 1. 28. 18:11
반응형

사용자 생성

내가 가장 많이 사용하는 사용자 생성 방법.

CREATE USER <사용자명> [WITH [ENCRYPTED] PASSWORD <패스워드>];

-- 예시
CREATE USER myuser WITH ENCRYPTED PASSWORD 'mypassword';

superuser로 생성

잘 쓰지 않지만, 간혹 쓸 일이 있다. 사실상 localhost에서만 사용하는데, AWS같은 클라우드 DB 인스턴스에서 보통은 동작하지 않기 때문.

CREATE USER <사용자명> WITH SUPERUSER PASSWORD <패스워드>;

-- 예시
CREATE USER myuser WITH SUPERUSER PASSWORD 'mypassword';

권한 부여

특정 DB에 모든 권한 부여

아래와 같은 명령일 것 같지만, 아래 명령은 의도대로 동작하지 않는다.
CREATE TABLE시, Permission denied를 목격할 수 있음.

GRANT ALL PRIVILEGES ON DATABASE <데이터베이스명> TO <사용자명>;

원인

위 명령은 DB 내, DML에 대한 권한 부여가 아니기 때문이다.
자세한 내용은 여기를 참조

적절한 권한 부여 방법

ALTER DATABASE <데이터베이스명> OWNER TO <사용자명>;

-- 예시
ALTER DATABASE mydb OWNER TO myuser;

이 외의 방법도 있긴 하나, 나는 잘 쓰지 않는다. 실무에서도 딱히 쓸일이 없기 때문.

묶어서 한방에 사용하기

CREATE USER myuser WITH SUPERUSER PASSWORD 'mypassword';
CREATE DATABASE mydb;
ALTER DATABASE mydb OWNER TO myuser;
-- 근데 보통 DB명과 사용자명은 통일하는 게 사용성이 좋다. 위는 예시
반응형