DataBase/Oracle

[Admin] User 관리하기 - 생성/수정/삭제

브라우니란 2024. 9. 3. 17:38

 

1. 권한

 

유저 관리에 대해 알아보기 전에 권한에 대해서 정리를 하고 넘어가보자.

 

권한이란 특정한 SQL문을 수행할 수 있는 권리이다.

예를 들어, 사용자에 따라서 SELECT만 가능하고, UPDATE, DELETE 등을 사용하지 못하도록 하는 것이다.

이렇게 권한을 제어한 이유는 데이터베이스의 보안 목적이 가장 크다.

 

권한에는 시스템 권한과 객체 권한이 있다.

시스템 권한 데이터베이스에 영향을 줄 수 있는 권한
객체 권한 객체(테이블, 프로시저 등)를 사용할 수 있는 권한

 

데이터 베이스에 영향을 준다는 것은 변화가 생긴다는 것을 의미한다.

예를 들어, 해당 유저에 대해서 세션을 접속하거나, 어떠한 테이블이든 볼 수 있는 권한을 줄 수 있다.

 

객체는 테이블, 프로시저, 시퀀스 등이 있으며, 이 객체들을 사용할 수 있는지에 대한 권한이다.

예를 들어, 테이블을 SELECT 하거나 프로시저는 ALTER 하는 것이 이에 해당한다.

 

또한, 시스템 권한과 객체 권한은 DBA에 의해서 GRANT, REVOKE (부여, 회수) 등에 의해 관리된다.

유저에게 부여할 수 있는 권한을 모아 놓은 객체, 관리에 대한 편리성을 목적으로 ROLL(롤)을 통해 권한을 편리하게 관리한다.

 

 

2. 유저 생성

 

우선 유저를 생성하기 전에 현재 내가 접속한 세션에서의 계정 정보를 확인해보자.

SHOW USER

-- 예시
-- USER이(가) "SYS"입니다.
-- USER이(가) "HR"입니다.

 

-- 현재 DB에 생성되어 있는 유저 정보 확인
SELECT *
FROM dba_users;

 

 

유저를 생성하자.

 

아래 쿼리의 의미를 해석하자면 insa 유저를 생성하는데, 비밀번호는 oracle 이며

테이블을 생성할 때, 테이블이 저장되는 기본 tablesapce 는 user이며, 임시 tablesapce는 temp 이다.

테이블 스페이스를 사용할 때 최대 사용할 수 있는 용량은 10m로 제한한다.

CREATE USER insa 
IDENTIFIED BY oracle
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
QUOTA 10M ON users;

 

 

예시 쿼리에 사용된 옵션 외에도 다양한 옵션들을 포함하여 아래와 같이 정리하였다.

IDENTIFIED BY 계정 비밀번호 설정
DEFAULT TABLESPACE 논리적인 테이블 스페이스 위치, TABLESPACE 자동 저장 공간
TEMPORARY TABLESPACE 임시테이블 스페이스
QUOTA 10M ON 테이블 스페이스를 사용할 수 있는 스토리지 용량 지정 (명시하지 않으면 사용할 수 없음)
PASSWORD EXPIRE 유저 생성 후 처음 접속하는 순간 비밀번호 변경
ACCOUNT LOCK | UNLOCK(기본값)  
PROFILE profile | DEFAULT(기본값)  

 

그리고 최종적으로 생성된 유저가 있는지 검증을 하자.

아래 쿼리를 통해 출력되는 테이블 속에 우리가 생성한 insa 계정을 확인하자.

-- SYS Session
SELECT *
FROM dba_users;

 

 

 

3. 유저 수정

 

특정 계정에 대해서 테이블 스페이스 용량을 늘린다거나, 테이블 스페이스를 바꾸는 일이 발생할 수 있다.

이럴 때 어떻게 하는지 알아보자.

 

아래 쿼리는 우리가 앞서 생성하였던 insa 유저에 대해 테이블 스페이스 공간 옵션을 수정하는 내용이다.

실행하게 되면 insa 유저는 user 테이블 스페이스 사용 용량이 기존에는 10m 에서  unlimited 즉, 제한이 없어졌다.

ALTER USER insa 
IDENTIFIED BY oracle 
DEFAULT TABLESPACE users 
TEMPORARY TABLESPACE temp 
QUOTA unlimited ON user;

 

 

유저 수정에서도 생성할 때와 같은 옵션들을 사용할 수 있다.

IDENTIFIED BY 계정 비밀번호 설정
DEFAULT TABLESPACE 논리적인 테이블 스페이스 위치, TABLESPACE 자동 저장 공간
TEMPORARY TABLESPACE 임시테이블 스페이스
QUOTA 10M ON 테이블 스페이스를 사용할 수 있는 스토리지 용량 지정 (명시하지 않으면 사용할 수 없음)
PASSWORD EXPIRE 유저 생성 후 처음 접속하는 순간 비밀번호 변경
ACCOUNT LOCK | UNLOCK(기본값)  
PROFILE profile | DEFAULT(기본값)  

 

 

 

4. 유저 삭제

 

사용하지 않는 유저에 대해서는 삭제를 통해 관리 할 수 있다.

단, 여기서 한가지 주의할 점이 있다. 만약 유저에 속한 Object 가 있을 경우 유저를 삭제하면 오류 발생한다.

만약 유저 삭제 과정에서 유저에 속한 Object에 의해 삭제가 되지 않을 경우 CASCADE 옵션을 통해 해결하자.

 

아래 쿼리를 통해 insa 유저를 삭제할 때, 관련된 객체들도 함께 삭제를 진행한다.

 

  • CASCADE: 유저 삭제 전에 유저가 생성한 Object 들을 찾아서 삭제한 후 유저를 삭제한다.
-- DROP USER [User] CASCADE; 
DROP USER insa CASCADE;