사용자 생성

우리가 여태껏 scott계정에서 실습했듯이, 우리는 여러개의 계정을 만들어 사용 용도에 맞게 설정할 수 있다.

우선, 사용자를 생성하고 권한을 부여하기 위해선 시스템 권한을 가진 DBA(DataBase Administrator)권한을 부여받은 SYS 또는 SYSTEM계정으로 접속해야한다.

우리가 터미널에서 데이터베이스를 실행하고 접속했듯이, 사용자계정 생성은 DB툴인 DBeaver에서는 한계가 있으므로, 이젠 터미널로 넘어와서 실습을 진행해보자.

유저 생성

conn system/비밀번호

SYSTEM계정으로 접속하는 명령어다. 비밀번호는 컨테이너로 DB를 생성할때 PASSWORD=뒤에 붙였던 비밀번호이다.

기억이 안 난다면 여기서 확인할 수 있다.

관리자 계정으로 들어왔으니 새로운 계정을 하나 만들어보자.

CREATE USER test IDENTIFIED BY 1234;

test라는 계정을 비밀번호 1234로 설정해서 생성했다.

생성된 계정을 확인하려면,

SELECT username FROM dba_users;

 

test 계정이 성공적으로 생성된걸 확인했으니 접속해보자.

conn test/1234

이러한 에러가 뜨는데, 그 이유는 test라는 계정에 접속 권한을 주지 않아서 그렇다.

또한 이렇게 conn 명령어로 접속에 실패하면, 현재 sqlplus 상태는 미연결 상태로 바뀐다.

접속 권한을 포함해서 우리가 이 계정을 실습에 이용하기 위한 몇 가지 권한을 부여하자.

권한을 부여하려면 다시 SYSTEM계정에 접속해서 다음 명령어를 입력하면 된다.

GRANT CREATE SESSION TO test;

그리고 다시 test에 접속하면 성공적으로 될 것이다.

하지만 우리는 테이블을 만들고 수정할 것이기 때문에 몇 가지 권한을 더 부여해보자.

GRANT CONNECT, RESOURCE TO test;

접속 권한과 테이블 객체 관련 권한 설정을 하는 명령어다.

**추가로 tablespace에 대한 권한도 설정해주어야 한다.

이는 Oracle DB Enterprise Edition 11.2.0.4 이후에 생겨난 권한설정이다. 이전 버전을 사용하고 있다면 이 단계는 건너뛰자.

GRANT UNLIMITED TABLESPACE TO test;

이제 필요한 권한을 부여했으니, test계정에 접속해 아무 테이블 하나를 만들어보자.

conn test/1234

CREATE TABLE aaa(f1 NUMBER NOT NULL, f2 VARCHAR2(20));

INSERT INTO aaa VALUES (1, 'DDDD');

SELECT * FROM tab;

SELECT * FROM aaa;

DBA 권한

DBA권한을 다른 계정에 부여하고 회수할 수 있다.

새로운 DBA계정이 생긴다면, 그 계정에서 사용자를 생성/삭제할 수 있다.

test2계정을 새로 만들고, DBA계정으로 만들어보자.

conn system/비밀번호

CREATE USER test2 IDENTIFIED BY 1234;

GRANT CONNECT, RESOURCE, UNLIMITED TABLESPACE, DBA TO test2;

conn test2/1234;

이제 test2계정이라는 새로운 관리자 계정이 생성되었다.

계정 생성

여기서 test3 계정을 새로 만들고, 권한을 부여해보자.

CREATE USER test3 IDENTIFIED BY 1234;
GRANT CONNECT, RESOURCE, UNLIMITED TABLESPACE TO test3;

권한을 주는건 GRANT이고, 회수하는건 REVOKE를 사용하면 된다.

새로운 관리자 계정 test2에게서 DBA권한을 회수할 수 있다.

REVOKE DBA FROM test2;

CREATE USER test4 IDENTIFIED BY 1234; --ERROR

이제 test2에서는 더 이상 계정을 생성할 권한이 없다. 관리자 계정인 SYSTEM으로 접속하자.

계정 비밀번호 변경

계정의 비밀번호도 바꿀 수 있다.

ALTER USER scott IDENTIFIED BY lion;

이제 scott계정의 비밀번호는 tiger가 아니라 lion이다.

계정 잠그기/풀기

계정을 잠궈서 일시적으로 사용하지 못하게 할 수 있다.

ALTER USER test ACCOUNT LOCK;
ALTER USER test ACCOUNT UNLOCK;

계정 삭제

이쯤에서 눈치 챘겠지만, 계정을 삭제하는 명령어는 DROP이다.

DROP USER test;

하지만 계정내에 데이터가 존재한다면, 쉽게 삭제시켜주지 않는다. 만약 계정과 그 안에 포함하고있는 데이터까지 같이 삭제하려면 CASCADE가 붙어야한다.

DROP USER test CASCADE;

지금까지 만들었던 test계정들을 모두 삭제하고 마치자.

DROP USER test2;
DROP USER test3;

+ Recent posts