클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

사용자, 권한, 롤 관리 1 - 사용자 관리 및 권한 관리 본문

알고리즘 및 자료 관리/데이터베이스

사용자, 권한, 롤 관리 1 - 사용자 관리 및 권한 관리

huenuri 2024. 8. 23. 16:57

아침도 든든히 먹었으니 다시 아침 공부를 시작해볼 것이다. 일주일이 넘도록 감기가 낫지 않아서 많이 불편하다. 어젯밤에는 잠을 잘 때 코가 막혀서 숨을 쉬기도 너무 힘들어서 몇번 잠을 깨기도 했다.
빨리 나았으면 좋겠는데 감기가 걸렸다는 건 내 몸 상태가 별로 안좋고 면역력이 떨어졌다는 증거이다. 아침도 꼭 챙겨먹고 비타민도 잘 먹어야겠다~

이번에는 DCL 명령어에 대해 학습해보려고 한다.

 

학습 내용

  1. SQL 문법과 DCL에 대하여
  2. 사용자 관리
  3. 권한 관리

학습 시간

아침 9시 반 ~ 11시 20분 <1시간 50분 소요>


 

 

 

1. DCL에 대하여

 

 

 


 

 

2. 사용자 관리

사용자란?

 

 

 

HR이나 SCOTT 계정은 많이 공유되는 계정이므로 주요 데이터를 보관하고 관리하기에 보안 위험이 있다. 따라서 SCOTT 계정 외에 오라클 데이터베이스에 접속할 수 있는 새로운 계정이 필요하다.

 

 

 

 

데이터베이스 스키마란?

데이터 간 관계, 데이터 구조, 제약 조건 등 데이터를 저장 및 관리하기 위해 정의한 데이터베이스 구조의 범위를 스키마(schema)를 통해 그룹 단위로 분류한다.
오라클 DB에서는 스카미와 사용자를 구별하지 않고 사용하기도 한다. 사용자는 데이터를 사용 및 관리하기 위해 오라클 데이터베이스에 접속하는 개체를 뜻하고, 스키마는 오라클 데이터베이스에 접속한 사용자와 연결된 객체를 의미한다.

SCOTT 계정을 예로 들면 SCOTT은 사용자이고 SCOTT이 생성한 테이블 · 뷰
· 제약 조건 · 인덱스 · 시퀀스 등 DB에서 SCOTT 계정으로 만든 모든 객체는 SCOTT의 스키마가 된다.

 

 

 


 

 

 

 

사용자 생성

이 부분은 어제 실습을 진행했으므로 생략한다. 객체 종류 단원에 정리해놓았다. 그래도 PDF 파일로 다시 한번 정리해보자!

 

 

 

 

 

 

 

 

 

 

 

GRANT 사용 방법

 

 

 

 

사용자 정보 조회

 

어제 만들었던 dcltest 계정이 잘 있는지 조회해보았다.

 

 

 

 

오라클 사용자의 변경과 삭제

사용자 정보(비밀번호) 변경하기

 

비밀번호를 변경해보았다.

 

 

변경 후에는 DCLTEST 계정을 이전 비밀번호로 접속하자 접속이 되지 않음을 확인할 수 있다.

 

 

 

 

 

오라클 사용자 삭제

삭제는 함부로 진행하지 않는 것이 좋다. 혹시라도 SYS, SYSTEM 등의 사용자를 삭제하는 것은 피해야 한다.
이 부분은 아래의 권한 관리를 학습한 후에 다시 와서 진행해보려고 한다. 아직 실습해볼 예제가 남아있으니까.

 

삭제를 시도해보았는데 다른 곳에 접속되어 있을 때는 삭제가 안된다고 한다. 해제를 했는데도 되지 않았다. 그냥 이런 기능이 있구나 하고 알았으면 그것으로 되었다~


 

 

 

 

3. 권한 관리

데이터를 안전하게 보관하고 특정 데이터에 대해서 관련된 사용자만 데이터를 사용 및 관리할 수 있는 보안장치가 필요하다. 사용자 이름과 패스워드를 통해 데이터베이스 접속을 허가하는 것이 그 첫번째가 된다.
하지만 특정 사용자 정보를 통해 데이터베이스에 접속하는 것만으로 모든 데이터를 사용할 수 있다면 여전히 데이터 안전을 보장하기 어려울 것이다.

따라서 데이터베이스는 접속 사용자에 따라 접근할 수 있는 데이터 영역과 권한을 지정해줄 수 있는데, 오라클에서는 권한을 시스팀 권한과 객체 권한으로 분류한다.

 

 

 

 

시스템 권한이란?

사용자 생성과 정보 수정 및 삭제, 데이터베이스 접근, 오라클 데이터베이스의 여러 자원과 객체 생성 및 관리 등의 권한을 포함한다. 이러한 내용은 데이터베이스 관리 권한이 있는 사용자가 부여할 수 있는 권한이다.

다음은 시스템 권한의 일부이며 ANY 키워드가 들어있는 권한은 소유자에 상관없이 사용 가능한 권한을 의미한다.

 

 

 

 

시스템 권한 부여

어제 DCLTEST로 계정을 하나 만들고 권한을 부여해주었는데 오늘 해보니 잘 안되었다. 그러면서 알게 된 사실이 있다. 30분이 넘도록 이 문제와 씨름 중이다.
권한을 한번 부여했다고 해서 영원히 지속되는 것이 아니었다. 접속을 할 때마다 권한을 부여해주어야 한다. 난 어제 계정을 만들고 권한을 부여했으나 당연히 오늘도 될 줄 알았다.

그리고 먼저 시스템 계정으로 접속한 다음에 새 계정을 만들 수 있다. 어제 만들었던 DCLTEST는 지우고 STUDY 계정을 하나 만들어보았다.

 

 

이제 접속이 잘 된다.

 

테이블을 생성하는 건 이상하게도 안된다. 이 부분은 다음에 다시 해봐야될 것 같다. 지금으로서는 방법을 잘 모르겠다.

 

 

 

 

시스템 권한 취소

REVOKE를 사용하면 권한을 취소할 수 있다.

조금 전에 시도했던 것이 실패했던 이유도 권한이 불충분하기 때문인 것 같다.

 

 

 

 

객체 권한이란?

특정 사용자가 생성한 테이블 · 인덱스 · 뷰 · 시퀀스 등과 관련된 권한이다. 예를 들어 SCOTT 소유 테이블에 ORCLSTUDY 사용자가 SELECT나 INSERT 등의 작업이 가능하도록 허용할 수 있다.

 

 

 

 

객체 권한 부여

객체 권한 역시 GRANT문을 사용한다.

 

 

 

 

 

 

 

 


 

 

 

학습을 마치고

오늘은 이상하게도 권한 부여만 되고 테이블 조회도 객체 권한을 부여하는 것도 하나도 되지 않았다. 지금은 마음이 급해서 더 잘 안되는 것 같기도 하다. 개발을 하다보면 이렇게 잘 안되는 때가 있다.
내가 할 수 있는 모든 것을 다 해도 되지 않을 때 막막한 기분이 들며 화가 나기도 하고 짜증이 올라오기도 한다.

하지만 이럴 때도 마음을 차분히 가라앉히고 흥분하지 않아야 할 것이다. 그렇게 하는 순간 생각은 더 흩어지고 스트레를 받아 낙담의 골짜기에 빠져버릴 수 있다는 것을 꼭 기억하자! 조금 머리를 식히고 예배에 갈 준비를 하며 오늘의 아침 공부는 여기서 마치려고 한다.
오후에 다시 한번 시도해보고 그래도 안되면 아직은 배울 때가 아니라고 생각하면 된다. 그리고 나중에 다시 이해가 되고 해결할 수 있는 순간이 반드시 온다.