$ cat ./posts/43.md
IT 2023.01.28 · 2 min read
PostgreSQL에 사용자와 권한 추가하기(CREATE USER, GRANT PERMISSIONS)
사용자 생성
내가 가장 많이 사용하는 사용자 생성 방법.
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명과 사용자명은 통일하는 게 사용성이 좋다. 위는 예시