관리 메뉴

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

사용자, 권한, 롤 관리 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문을 사용한다.

 

 

 

 

 

 

 

 


 

 

 

학습을 마치고

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

 

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