본문 바로가기

데이터베이스/오라클

[SQL] 계정 생성 및 시스템 권한 부여/삭제


 여태껏 실습을 하시면서 보통 사용해온 계정은 hr 계정아니면 scott 계정 등등 있을텐데요.
이와 같은 계정은 오라클에서 제공하는 샘플 스키마로서 계정에 대한 권한들과 모든 테이블, 데이터들이 미리 구축 되어 있습니다.

 이번 글에서는 계정 생성과 시스템 권한에 대해서 알아볼까 합니다.

우선 기존에 존재하던 스키마 계정을 사용할때는 관리자 계정으로 접속후 다음과 같이 해주어야 합니다.
SQL> alter user hr identified by hr account unlock;
SQL> alter user scott identified by oracle accoun unlock;

 기존의 샘플 스키마들은 락(lock)이 걸려 있기 때문에 위와 같이 바꿔줘야 하는데,
identified by 뒤에 나오는것은 비밀번호를 설정해주는 것입니다. 그러고 나서 계정을 풀어줍니다.

 hr이나 scott들과 같이 존재하는 스키마들과는 달리 계정을 새롭게 생성할려면, 계정 생성 권한이 있는 계정으로 접속해야 합니다.
우선 우리가 접속하는 관리자 계정은 시스템에 대한 모든 권한을 가지고 있으므로, 이 계정으로 접속해서 작업하도록 합니다.

 sys계정을 접속후 다음과 같이 계정을 생성합니다.
SQL> CREATE USER test identified by test;

[실행화면]


유저가 만들어졌다는 메시지가 나오면 계정이 생성 된것입니다.

그렇다면 만들어진 계정으로 접속해 볼까요? 다음과 같이 입력합니다.
SQL> conn test/test


[실행화면]


 위와 같이 에러 메시지가 나오면서 접속이 되질 않는데, 메시지를 보면 CREATE SESSION 권한이 없다고 나옵니다.
이 말은 즉슨, 해당 계정이 CREATE SESSION 권한이 있어야 접속이 가능하다는 뜻입니다. 그래서 로그온이 거부 되었죠.

 이 권한은 관리자 권한이기 때문에 sys나 system 계정으로 test 계정에 권한을 부여하여야 합니다.
권한 부여 방법은 다음과 같습니다.
SQL> GRANT create session
         TO test;

[실행화면]



 권한 부여가 성공되었다고 나옵니다. 그렇다면 다시 접속을 해봐야 겠군요?
다시 접속과정을 되풀이 합니다.

[실행화면]


 접속이 성공했다고 나옵니다. 자, 그럼 이 접속한 계정을 가지고 테이블을 만들어 보도록 하겠습니다.
테이블 생성과 관련해서는 블로그내 다른글 참고 하시면 됩니다.
테이블 생성 관련 글 보기

SQL> CREATE TABLE test.name
         (name VARCHAR(10));


[실행화면]


 불충분한 권한이라는 메시지와 함께 테이블 생성이 거부 되는군요.
그렇습니다. 여기서 우리가 알 수 있는 것은 계정이 만들어져 있다고 해서 우리가 알고 있는 작업들을 할 수 있는게 아닙니다.
역시나 테이블 생성에 관한 시스템 권한을 주어야 합니다. 다시 관리자 계정으로 접속합니다.

SQL> GRANT create table 
         TO test; 


[실행화면]


 위를 확인후 test 계정으로 다시 접속합니다. 그리고 나서 테이블을 다시 생성해 봅니다.

[실행화면]


 여기서 분명 "어래?" 하시는 분들이 계실겁니다. "계정 권한도 다 줬는데 왜 오류가 나는거지? 더 줘야 하는 권한이 있나?"
네. 줘야합니다. 위의 메시지를 확인 하시면 테이블 스페이스 'USERS'에 권한이 없다고 나오는데요.
이 공간에 공간 할당 권한인 'QUOTA' 권한이 필요합니다. 지금은 이 정도로만 알아둡시다.

 자 여기까지가 계정생성과 관련된 시스템 권한 내용 설명입니다.
시스템 권한에는 다음과 같은 것들이 존재합니다. 

 CREATE USER  사용자 생성 권한
 DROP USER  사용자 삭제 권한
 CREATE ANY TABLE  모든 사용자에 대한 테이블 생성 권한
 SELECT ANY TABLE  모든 사용자에 대한 테이블 조회 권한
 ALTER USER  사용자 옵션 변경 권한(패스워드 제외)
 CREATE SESSION  접속권한
 CREATE TABLE  테이블 생성 권한
 CREATE SEQUENCE  시퀀스 생성 권한
 CREATE VIEW  뷰 생성 권한
 CREATE SYNONYM  시노님 생성 권한
 CREATE PROCEDURE  프로시저 생성 권한
 CREATE TRIGGER  트리거 생성 권한

 이외에도 다른 권한이 존재하지만 이 정도면 될 듯 합니다.

그리고 사용자 권한은 다음과 같이 제거 가능합니다. 역시 관리자 계정으로 접속합니다.

SQL> REVOKE create table
         FROM test;


[실행화면]


 이렇게 권한이 삭제 됩니다. 여기까지가 계정 생성 및 시스템 권한 입니다.
다음글에서는 객체(Object) 권한에 대해서 다루겠습니다.

도움 되셨다면 밑의 추천(손가락 표시)과 댓글 부탁드립니다.