재유's

Oracle 사용자 만들고 권한 부여하기 본문

IT Story/: : Oracle

Oracle 사용자 만들고 권한 부여하기

Stella_NY 2017. 5. 1. 14:58


1. 사용자 생성하기

DB 객체를 생성할 때에는 DDL인 CREATE를 사용합니다.


CREATE USER user_name
IDENTIFIED [BY  비밀번호 | EXTERNALLY ]
 [ DEFAULT TABLESPACE tablespace ]
 [ TEMPORARY TABLESPACE tablespace ] 
 [ QUOTA { integer [ K | M ] | UNLIMITIED } ON tablespace]
 [ PASSWORD EXPIRE ]
 [ ACCOUNT { LOCK | UNLOCK } ]
 [ PROFILE { profile | DEFAULT } ]

·'유저이름'에는 DB 로그인할 이름을 넣으시면 됩니다.

·'IDENTIFIED BY 비밀번호'  : 로그인시 접속할 비밀번호를 생각하시면 됩니다.
만약 'IDENTIFIED EXTERNALLY' 라고 지정하신다면 윈도우 인증으로 접속하게 됩니다.

·'DEFAULTTABLESPACE tablespace' : 사용자 스키마를 위한 기본 테이블 스페이스를 지정합니다.

·'TEMPOPARY TABLESPACE tablespace' : 사용자의 임시 테이블 스페이스를 지정합니다.

·'QUOTA'는 사용자가 사용할 테이블 스페이스의 영역을 할당 합니다....(는 잘 모르겠어요 ㅜㅜ)

·'PASSWORD EXPIRE' : 사용자가 SQLPLUS를 사용하여 DB에 로그인할 때 
암호를 재설정 하도록 합니다. 
(사용자가 데이터베이스 인증(비밀번호 인증)일 경우에 적합한 옵션)

·'ACCOUNT LOCK/UNLOCK' : 사용자의 계정을 명시적으로 잠그거나 해제할때 사용합니다.
(DEFAULT : UNLOCK)

·PROFILE : 자운 사용을 제어하고 사용자에게 사용하는 암호 제어 처리 방식을 지정하는데 사용


ex)
CREATE USER test IDENTIFIED BY "1234";
username : test
password : 1234
( 비밀번호를 숫자로만 주고 싶을 때엔 ""(큰따옴표) 안에 정의합니다.
단, 문자가 섞여있을 경우(문자가 맨 앞에 위치 시) ""은 사용하지 않습니다.)



2. 사용자에게 권한 주기

계정을 생성하고 sqlplus를 통해 접속을 하면


 위와 같은 에러가 발생합니다.
이건 test DB의 접속 권한을 주지 않아서 그러습니다.

따라서 위처럼 계정을 생성을 하였다면
계정이 DBMS에 접속하여 권한을 줄수 있게 하기 위해선 DCL의 GRANT를 사용해야합니다.

권한은 아래와 같이 여러가지가 있습니다.

GRANT CREATE SESSION TO username;         // 데이터베이스에 접근할 수 있는 권한

GRANT CREATE DATABASE LINK TO username;
GRANT CREATE MATERIALIZED VIEW TO username;
GRANT CREATE PROCEDURE TO username;
GRANT CREATE PUBLIC SYNONYM TO username;
GRANT CREATE ROLE TO username;
GRANT CREATE SEQUENCE TO username;
GRANT CREATE SYNONYM TO username;
GRANT CREATE TABLE TO username;
GRANT DROP ANY TABLE TO username;
GRANT CREATE TRIGGER TO username; 
GRANT CREATE TYPE TO username; 
GRANT CREATE VIEW TO username;

음... 하나씩 일일이 주기 귀찮은 저는 그냥 아래와 같이 주기로 했습니다.

ex) 모든 권한 주기
GRANT CONNECT, DBA, RESOURCE TO username;

모든 권한 주기 처럼 주시거나, CREATE SESSION을 이용한다면


위와 같이 연결이 된 모습을 보실수 있습니다 ^^


 
3. 사용자 권한 해제하기

권한을 주었다면 다시 권한을 뺏고 싶을떄 사용하는건 DCL의 REVOKE 입니다.

위의 GRANT와 똑같이 사용할수 있는데요. 
GRANT 대신 REVOKE를,
TO 대신 FROM을 사용하신다면 REVOKE 문이 완성됩니다.

ex)
REVOKE CONNECT, DBA, RESOURCE FROM username;



4. 사용자 비밀번호 바꾸기

USER의 비밀번호 바꾸기는 DDL의 ALTER를 사용해 바꿉니다.

ALTER USER username IDENTIFIED BY 변경할 비밀번호;

로 바꿀수 있습니다.



5. 사용자 삭제하기

USER의 삭제는 DDL의 DROP을 사용해 삭제합니다.

DROP USER username;
DROP USER username CASCADE;

위의 문법으로 바꿀수 있는데 
CASCADE는 USER가 객체를 소유하고 있을 경우에 꼭 사용해야되는 것으로
사용하게 되면 사용자 이름과 관련되 모든 데이터베이스 스키마가 삭제되고 
물리적으로도 삭제가 됩니다.


Comments