테이블명 | 읽기 권한 | 쓰기 권한 |
---|---|---|
Language | O | X |
Problem | O | X |
Submission | O | X |
Testcase | O | X |
테이블명 | 읽기 권한 | 쓰기 권한 |
---|---|---|
Language | O | O |
Problem | O | O |
Submission | O | O |
Testcase | O | O |
Example | O | O |
Result | O | O |
State | O | O |
User | O | O |
Scoring 서버에서 DB에 접근하기 위해 새로운 DB 사용자가 필요했다.
동시에 쓰기 권한과 일부 테이블의 읽기 권한이 필요없었기 때문에 아래와 같이 일부 테이블에만 읽기 권한을 주었다.
접근 권한 부여 과정
postgres 접속
$ psql
사용자 생성
# create user {사용자이름} paassword {패스워드};
> create user scoring paassword 'hhhh';
database 접속
# postgres use database 명령어
> \\c moj-db
접근 권한 부여
# grant {접근권한} on {테이블명} to {사용자명}
> grant select on problem to scoring
> grant select on submission to scoring
> grant select on language to scoring
> grant select on testcase to scoring
접근 권한 옵션에는 뭐가 있을까?
SELECT | 데이터 조회. UPDATE/DELETE 하려면 포함 필요 |
---|---|
INSERT | 데이터 추가 |
UPDATE | 데이터 수정 |
DELETE | 데이터 삭제 |
TRUNCATE | 데이터 모두 삭제 |
REFERENCES | 외래키 제약 조건 생성 |
TRIGGER | 트리거 |
CREATE | 스키마 생성 |
CONNECT | 데이터베이스 연결 |
TEMPORARY | 임시 테이블 생성 |
EXECUTE | 함수/프로시저 연산자 허용 |
USAGE | 스키마 객체 접근 허용 |
ALL PRIVILEGES | 모든 권한 |
// app.module.ts
TypeOrmModule.forRootAsync({
imports: [ConfigModule],
useFactory: (configService: ConfigService) => ({
type: 'postgres',
host: configService.get('POSTGRESQL_HOST'),
port: +configService.get('POSTGRESQL_PORT'),
username: configService.get('POSTGRESQL_USERNAME'),
password: configService.get('POSTGRESQL_PASSWORD'),
database: configService.get('POSTGRESQL_DATABASE'),
autoLoadEntities: true,
synchronize: true,
namingStrategy: new SnakeNamingStrategy(),
logging: ['query'],
}),
inject: [ConfigService],
}),