2021. 4. 9. 19:48ㆍOracle 공부
이번에는 권한에 대해서 알아 봅시다.
권한
데이터베이스에서 권한이란 무엇일까요?
바로. 테이블을 생성, 수정, 삭제 등등을 할 수 있는 권한 인데요.
처음에 oracle 데이터베이스 서버에 접속했던 걸 기억 하시나요?
그 때, 저희는 sys라는 계정을 통해서 CDB, PDB 를 만들고 연습용 계정 hr 을 만들었었죠?
왜 이렇게 번거롭게 했었나요? 그 이유는...
sys는 최상위 계정이기 때문에 모든 데이터에 접근 할 수 있고 삭제할 수도 있기 때문에, 데이터의 안전성을 위해서 원본 데이터베이스인 CDB 에서 복사본 데이터베이스 PDB 를 만들고, 권한이 분할된 hr 계정을 만든 겁니다.
hr이라는 계정은 orcle 에서 연습하라고 미리 만들어 놓은 것 입니다.
이번에는 저희가 직접 계정을 만들어 보고, 권한도 설정해 봅시다.
※ 실제로 실무에서는, 이렇게 저희가 계정을 만들거나 삭제하거나 등등 할 일이 없다고 합니다.
사용자 계정 생성
XEPDB1 데이터베스의 사용자 계정을 만들 수 있는 권한이 sys에게 있기 때문에, PDB에 접속을 해줍시다.
CREATE USER 생성할계정명 IDENTIFIED BY 비밀번호; ( 대소문자 구분 )
이렇게 하면, 사용자 계정을 생성하는 건데요, 접속을 해봅시다.
사용자 이름, 비밀번호를 입력하고 테스트를 눌러줍니다.
테스트를 눌렀더니, 이렇게 CREATE SESSION 권한을 가지고 있지 않아서 접속이 불가능 하다고 나옵니다.
즉. 사용자 계정만 만들고 권한을 아무것도 가지고 있지 않은 겁니다 ( 접속 권한x )
이제 권한을 한번 줘 봅시다.
권한 주기
- GRANT 권한 TO 계정 -> 권한을 계정에 준다
CREATE SESSION -> 오라클 서버 접속 기능
CREATE TABLE -> 테이블 만들 수 있는 기능
CREATE VIEW -> 뷰를 만들 수 있는 기능
CREATE SEQUENCE -> 시퀀스를 만들 수 있는 기능
CREATE PROCEDURE -> 프로시저를 만들 수 있는 기능 (아직 안배움)
이제 접속이 가능 합니다.
접속을 하게 되면, 이렇게 PDB , user3 에 접속이 된 걸 확인 할 수 있는데, 각각의 시트에서 어디에 접속하고 있는지를 잘 확인해 주어야 합니다. 우측 상단에 보면 이렇게, 어디에 접속되어 있는지 확인 할 수 있습니다.
- GRANT ROLE TO 계정 -> ROLE 권한을 계정에 준다
ROLE은 권한을 여러개 합쳐놓은 것을 의미 합니다.
CONNECT -> 오라클 서버 접속 기능
RESOURCE -> PROCEDURE을 뺀 위의 기능들
DBA -> 데이터베이스 관리자 기능
이제, 권한을 받았으니.... 테이블과 시퀀스를 만들어 봅시다
만든 시퀀스를 사용해서, 테이블에 데이터를 넣어봅시다.
그런데, 이렇게 오류가 발생합니다.
그 이유는, 테이블스페이스( 물리적인 공간 ) 가 없어서 그렇습니다.
즉. 실제로 데이터가 저장될 공간이 없어서 , 이 공간을 지정 해주어야 한다는 말 입니다.
다운로드 받은 오라클의 경로에 들어가보면, 이렇게 .DBF 파일이 5개 있는데, 여태까지 저희가 연습하던 데이터는 다 여기에 저장이 되어 있습니다.
테이블스페이스 는 기존에 있는 파일을 지정해주어도 되고, 만들어 줘도 됩니다.
- 기존 테이블스페이스 지정하기.
ALTER USER ALTER USER 계정명 DEFAULT TABLESPACE 테이블스페이스명 QUOTA UNLIMITED ON 테이블스페이스명;
ALTER USER -> 유저를 수정하겠다
DEFAULT TABLESPACE -> 기본 테이블스페이스를 지정하겠다
QUOTA UNLIMITED -> 공간의 제한은 없이 무제한으로 저장 하겠다
- 새로운 테이블스페이스 만들기.
보기탭 -> DBA
DBA를 누르면 왼쪽 아래에 아래와 같이 나타나게 되는데,
우클릭 -> 접속 추가 -> PDB 지정
아래와 같이 만들어 줍시다. 이제 PDB 파일의 왼쪽에 +를 눌러주세요.
그러면 밑에 나오는 목록 중에, 저장 영역에 + 를 누르고 테이블스페이스에 우클릭을 하고 새로 만들기를 눌러 줍시다.
새로 만들기를 누르면 나오는 창을 아래와 같이 작성해주세요
이름(A) : 데이터베이스 내에서 사용할 이름 입니다.
이름(C) : 실제로 만들어질 파일 이름 입니다.
디렉토리(D) : 위에서 보았던 오라클 XEPDB1 에 넣어 줍시다.
파일 크기(E) : 원하는 파일 크기 ( 500MB )
재사용 (G) : 크기가 다 찻을 때, 재사용할 것인지 여부
자동 확장 설정(I) : 크기가 다 찻을 때, 크기를 자동 확장 할 것인지 여부.
다음 크기(J) : 자동 확장할 크기
최대 크기(K) : 최대 확장할 크기. (제한 없음)
확인을 누르면, 지정한 경로에 생성이 된 걸 확인 할 수 있습니다.
이제 만든 테이블을 연결 해 줍시다.
그리고 다시 INSERT 문을 실행 해 봅시다.
※ 이렇게 했는데 안되서, oracle 재접속 후, 테이블 삭제, 시퀀스 삭제 후 다시 만들고 하니까 되더라구요.
이렇게 INSERT 까지 수행되는 걸 확인 했습니다.
사용자 계정의 권한 회수
- REVOKE 권한 FROM 계정 -> 권한을 회수한다
사용자 계정 삭제
- DROP USER 계정 -> 계정을 삭제한다 ( 테이블 , 시퀀스 등이 없어야 함 )
- DROP USER 계정 CASCADE -> 계정을 삭제한다 ( 테이블, 시퀀스 등 함께 삭제 )
DROP USER 계정 CASCADE 같은 경우는, 다 같이 삭제가 되기 때문에 굉장히 조심해서 사용해야 합니다. (사용할 일이 있을지 잘 모르겠지만...)
※ 마우스를 사용해서 사용자 생성 및 테이블스페이스 지정, 권한을 줄 수 있습니다,
좌측에 있는 "PDB 계정에 접속"한 후 아래로 내려서 "다른 사용자" 에 우클릭을 한 후 , "사용자 생성"을 누릅니다
- 비밀번호가 만료됨 -> 매번 비밀번호를 변경해주어야 됌
- 계정이 잠겨 있습니다 -> 매번 계정을 unlock 해주어야 됌
기본 테이블스페이스 를 지정합니다.
임시 테이블스페이스 를 지정합니다. ( TEMP )
그리고, 부여된 롤, 시스템 권한 등에서 권한을 줄 수 있습니다.
그 후 적용을 누르면 완료 ~
이렇게 권한 과 사용자 생성 및 수정 , 삭제에 대해 알아 보았습니다.
고생하셨습니다.
'Oracle 공부' 카테고리의 다른 글
Day39 - 개념적 데이터 모델링 (0) | 2021.04.12 |
---|---|
Day39 - 데이터 모델링 (0) | 2021.04.12 |
Day38 - index (0) | 2021.04.08 |
Day38 - squence (0) | 2021.04.08 |
Day38 - view (0) | 2021.04.08 |