[Postgresql] default tablespace 를 지정해서 table 생성 시 자동으로 tablespace 적용하는 법

식빵·2025년 1월 13일
0

postgresql-memo

목록 보기
35/36

방법(1) : 특정 ROLE 에 default tablespace 지정

# 테스트 계정 생성
create user tester login password 'tester';

# 기본적인 권한 부여
grant connect on database postgres to tester;
grant CREATE,USAGE on schema public to tester;


# 테스트 테이블 스페이스 생성
CREATE TABLESPACE tester_ts LOCATION 'C:\table_space\tester_ts';

# 생성 계정이 테이블 스페이스에 모든 권한을 갖도록 owner 적용
ALTER TABLESPACE tester_ts OWNER TO tester;

## 아니면 아래처럼 tablespace 에 CREATE 권한주기
## GRANT CREATE ON TABLESPACE tester_ts TO tester;

# 생성 계정의 디폴트 테이블 스페이스 지정 (이게 핵심!)
alter role tester set default_tablespace = tester_ts;


###################################################
#### 계정 로그아웃 + 생성한 계정으로 다시 로그인 ####
###################################################


# 현재 접속한 ROLE 에 default_tablespace 적용됐는지 확인
show default_tablespace;

# 테스트로 테이블 생성
create table public.something(id serial, name varchar(10));

# 테이블에 테이블 스페이스 적용 여부 확인
SELECT schemaname, tablename, tablespace
FROM pg_tables
WHERE tablename = 'something';

## 출력:
# schemaname | tablename | tablespace
# ------------+-----------+------------
# public     | something | tester_ts



방법(2) : 특정 Database 에 default tablespace 지정

CREATE TABLESPACE tester_ts LOCATION 'C:\table_space\tester_ts';
ALTER DATABASE postgres SET default_tablespace = tester_ts;



만약 둘 다 지정했다면 우순순위가 적용되어서
ROLE 의 default_tablespace 가 사용됩니다.

profile
백엔드를 계속 배우고 있는 개발자입니다 😊

0개의 댓글