Describe 사용자관리의기본 here {{{ 사용자관리는 데이타의 보호에 대한 기본적인 사항입니다..또한 데이타베이스 서버의 자원의 관리와도 밀접한 관련을 가지고 있습니다. 정보를 요구하는 쪽이 사용자이기 때문에 사용자관리를 너무나도 중요한 사항입니다.. 사용자는 보통 SQL*Plus라는 툴을 사용해서 접속합니다..물론 특정한 어플리케이션을 통해서 접속하기도 합니다.. 일단...SQL*Plus와 기타 어플리케이션을 통해 접속한 사용자를 클라이언트라고 하지요.. 다 알죠?? 헐헐~ 먼저 오라클을 설치하면 기본적인 사용자는 SYS/CHANGE_ON_INSTALL SYSTEM/MANAGER SCOTT/TIGER HR/HR 입니다.. 오라클 9i 버전부터는 설치하는 과정에 오라클 사용자에 대한 기본적인 패스 워드를 고칠수 있는 부분이 존재합니다.. 여기서 /다음에 있는 것이 기본적인 패스워드 입니다.. 웹에 오라클을 설치하고 나서 어떻게 접속해야하는지 몰라서 질문을 하시는 분들이 있 습니다..이러한 분들은 너무 성급하신 분들입니다...거의 모든 오라클 서적에는 기본적인 사용자와 그에 따른 패스워드를 명시하고 있습니다...오라클 설치시에도 나오 구요..저는 첨에 몰라서 한참 고생했었습니다..헐헐~ 바부같았죠머.. 암튼..기본적인 암호는 위에서 명시한바와 같습니다..여기서 SYS, SYSTEM 사용자는 패스워드를 고쳐줘야 합니다..만약 설치하는 과정중...정확하게는 데이타베이스를 생성 하는 과정중에 패스워드를 고치지 않으신 분들은 반드시 고쳐줘야 합니다.. SYS, SYSTEM사용자는 만땅권한(SYSTEM 사용자는 오라클을 기동/종료할수 만 없고, 만땅권한) 을 가지고 있기 때문에 이에 대한 암호를 고치지 않으면 아무나 사용할 수 있기 때문에 데이타의 손실의 우려가 있지요... 일단 고치지 않으신 분들은 고쳐주세요.. 문법은 다음과 같습니다.. ALTER USER 사용자명 IDENTIFIED BY 바꿀암호; SQL> ALTER USER SYSTEM IDENTIFIED BY MANAGER; 사용자가 변경되었습니다. SQL> ALTER USER SYS IDENTIFIED BY CHANGE_ON_INSTALL; 사용자가 변경되었습니다. 저는 그냥 기존의 암호로 다시 바꾼 것입니다..여러분은 다르게 고쳐주시기 바랍니다.. 일단 사용자의 관리에는 자원, 권한, 암호, 저장구조에 대한 4가지 고려를 해주어야 합니다. 먼저 기본적인 사용자의 생성과 변경에 대한 것을 알아보도록 하겠습니다. 다음은 오라클 사용자의 생성에 대한 문법입니다.. CREATE USER user IDENTIFIED { BY password | EXTERNALLY | GLOBALLY AS 'external_name' } [{ DEFAULT TABLESPACE tablespace | TEMPORARY TABLESPACE tablespace | QUOTA { integer [ K | M ] | UNLIMITED } ON tablespace [QUOTA { integer [ K | M ] | UNLIMITED } ON tablespace]... | PROFILE profile | PASSWORD EXPIRE | ACCOUNT { LOCK | UNLOCK } } [ DEFAULT TABLESPACE tablespace | TEMPORARY TABLESPACE tablespace | QUOTA { integer [ K | M ] | UNLIMITED } ON tablespace [QUOTA { integer [ K | M ] | UNLIMITED } ON tablespace]... | PROFILE profile | PASSWORD EXPIRE | ACCOUNT { LOCK | UNLOCK } ]... ] ; 졸라 많습니다...으~ 보기만 해도 지겹죠?? 근데..조금 사용해 보면 암껏두 아닙니다. 저걸 다 사용하는 것도 아니구...필요에 따라서 쓰면되는 것입니다..다음을 해봅시다.. 몰라두 일단은 따라해 봅시당... SQL> CREATE USER YASI 2 IDENTIFIED BY YASI; 사용자가 생성되었습니다. SQL> CONNECT YASI/YASI; ERROR: ORA-01045: user YASI lacks CREATE SESSION privilege; logon denied 경고: 이제는 ORACLE에 연결되어 있지 않습니다. SQL> CONNECT SYSTEM/MANAGER 연결되었습니다. SQL> GRANT CREATE SESSION TO YASI; 권한이 부여되었습니다. SQL> CONNECT YASI/YASI 연결되었습니다. SQL> 중간에 생성한 사용자로 연결을 시도했었으나 실패한 것이 보입니다.. 이것은 사용자를 생성했으나 그 사용자가 세션을 열수 있는 권한이 없기 때문에 연결이 실패한 것입니다.. 어떤 분들은 문법에는 졸라많은 사항들이 있는데 다 사용치도 않은 것에 대한 의문을 가질수 있습니다..생략한 것들에 대한 것은 오라클이 기본값을 정해진 대로 들어갑니다.. 자..일단 사용자 생성 -> 접속 까지는 성공했습니다..여기서 권한에 관련된 사항이 튀어 나오는 군요... 권한과 관련된 데이타 사전뷰는 다음과 같습니다... SQL> CONNECT SYS/CHANGE_ON_INSTALL AS SYSDBA; 연결되었습니다. SQL> SELECT TNAME FROM TAB 2 WHERE TNAME LIKE '%PRIV%'; TNAME ------------------------------------------------------------ ALL_COL_PRIVS ALL_COL_PRIVS_MADE ALL_COL_PRIVS_RECD ALL_REPGROUP_PRIVILEGES ALL_TAB_PRIVS ALL_TAB_PRIVS_MADE ALL_TAB_PRIVS_RECD COLUMN_PRIVILEGES DBA_AQ_AGENT_PRIVS DBA_COL_PRIVS DBA_PRIV_AUDIT_OPTS DBA_REPGROUP_PRIVILEGES DBA_ROLE_PRIVS DBA_RSRC_CONSUMER_GROUP_PRIVS DBA_RSRC_MANAGER_SYSTEM_PRIVS DBA_SYS_PRIVS DBA_TAB_PRIVS GV_$ENABLEDPRIVS OBJPRIV$ QUEUE_PRIVILEGES ROLE_ROLE_PRIVS ROLE_SYS_PRIVS ROLE_TAB_PRIVS SESSION_PRIVS SYSTEM_PRIVILEGE_MAP TABLE_PRIVILEGES TABLE_PRIVILEGE_MAP USER_AQ_AGENT_PRIVS USER_COL_PRIVS USER_COL_PRIVS_MADE USER_COL_PRIVS_RECD USER_REPGROUP_PRIVILEGES USER_ROLE_PRIVS USER_RSRC_CONSUMER_GROUP_PRIVS USER_RSRC_MANAGER_SYSTEM_PRIVS USER_SYS_PRIVS USER_TAB_PRIVS USER_TAB_PRIVS_MADE USER_TAB_PRIVS_RECD V_$ENABLEDPRIVS 40 개의 행이 선택되었습니다. SQL> SLEECT * FROM DBA_SYS_PRIVS; . . . 절라 많이 나옴..ㅡㅡ;;; SQL> CONNECT YASI/YASI; 연결되었습니다. SQL> COL USERNAME FORMAT A20 SQL> COL PRIVILEGE FORMAT A20 SQL> SELECT * FROM USER_SYS_PRIVS; USERNAME PRIVILEGE ADMIN_ -------------------- -------------------- ------ YASI CREATE SESSION NO SQL> 암튼..이렇습니다...권한에는 객체권한과 시스템 권한이 있습니다..위에서 절라 많이 나오는거 있죠? 그게 시스템 권한입니다...이거 일일이 다 정해주고 할라믄 머리 하얗게 되도 모잘랄 것이고 또한 짜증이 많이 나겠죠?? 그래서 생긴것이 롤이라는 것입니다...즉, 권한을 묶어서 사용하는 것입니다..사용자가 만들수도 있고..오라클에서 제공하는 것이 있습니다.. 이러한 부분에 대해서는 나중에 자세히 알아보도록 하구요...일단 중요한 롤 2개를 알아 보겠습니다...중요한 2개는 CONNECT, RESOURCE 롤입니다.. SQL> COL GRANTEE FORMAT A15 SQL> SELECT * FROM DBA_SYS_PRIVS 2 WHERE GRANTEE IN ('CONNECT', 'RESOURCE'); GRANTEE PRIVILEGE ADMIN_ --------------- -------------------- ------ CONNECT CREATE VIEW NO CONNECT CREATE TABLE NO CONNECT ALTER SESSION NO CONNECT CREATE CLUSTER NO CONNECT CREATE SESSION NO CONNECT CREATE SYNONYM NO CONNECT CREATE SEQUENCE NO CONNECT CREATE DATABASE LINK NO RESOURCE CREATE TYPE NO RESOURCE CREATE TABLE NO RESOURCE CREATE CLUSTER NO RESOURCE CREATE TRIGGER NO RESOURCE CREATE OPERATOR NO RESOURCE CREATE SEQUENCE NO RESOURCE CREATE INDEXTYPE NO RESOURCE CREATE PROCEDURE NO 16 개의 행이 선택되었습니다. 두개의 롤에는 8개씩의 권한을 가지고 있는 것이 보입니다..즉, 저런 구문을 사용할 수있다는 것입니다.. 해볼까요?? SQL> CONNECT YASI/YASI 연결되었습니다. SQL> CREATE TABLE TEST( 2 ID NUMBER, 3 NAME VARCHAR2(10)); CREATE TABLE TEST( * 1행에 오류: ORA-01031: 권한이 불충분합니다 SQL> CONNECT SYSTEM/MANAGER 연결되었습니다. SQL> GRANT CONNECT TO YASI; 권한이 부여되었습니다. SQL> CONNECT YASI/YASI; 연결되었습니다. SQL> CREATE TABLE TEST( 2 ID NUMBER, 3 NAME VARCHAR2(10)); CREATE TABLE TEST( * 1행에 오류: ORA-01950: 테이블 영역 'SYSTEM'에 대한 권한이 없읍 SQL> CONNECT SYSTEM/MANAGER 연결되었습니다. SQL> GRANT RESOURCE TO YASI; 권한이 부여되었습니다. SQL> CONNECT YASI/YASI 연결되었습니다. SQL> CREATE TABLE TEST( 2 ID NUMBER, 3 NAME VARCHAR2(10)); 테이블이 생성되었습니다. SQL> 사용자에 대한 삭제는 DROP USER 문을 사용합니다.. 문법은 다음과 같습니다.. DROP USER user [CASCADE]; SQL> CONNECT SYSTEM/MANAGER 연결되었습니다. SQL> DROP USER YASI; DROP USER YASI * 1행에 오류: ORA-01922: 'YASI'(을)를 삭제하려면 CASCADE를 지정하여야 합니다 SQL> DROP USER YASI 2 CASCADE; 오류는 이미 YASI 사용자가 생성한(소유한) 객체가 존재하기 때문에 이를 어떻게 해야하는지 모르는 오라클이 오류메세지를 리턴한 것입니다.. 여기서 말한 객체는 TEST 테이블입니다..그래서 CASCADE 옵션을 주어서 YASI 사용자가 소유한 테이블, 인덱스 등의 객체를 모두 같이 지운다는 것을 말하는 것입니다. 이제..오늘은 기본적인 사항 몇가지만 더 보구...다음으로 넘겨야 겠슴다.. 음...나머지 사용자 생성에 대한 것들입니다... DEFALUT TABLESPACE TEMPORARY TABLESPACE QUATO 기본적으로 위의 옵션을 붙여주지 않으면 사용자는 SYSTEM 테이블스페이스를 사용하게 됩니다. 그러면 여러가지 나쁜점이 있는데... 이 부분은 나중에 알아보도록 하구요... 일단...해봅시당.. SQL> CONNECT SYSTEM/MANAGER 연결되었습니다. SQL> DROP USER YASI CASCADE; 사용자가 삭제되었습니다. SQL> SELECT TABLESPACE_NAME FROM DBA_TABLESPACES; TABLESPACE_NAME ------------------------------------------------------------ SYSTEM UNDOTBS1 TEMP CWMLITE DRSYS EXAMPLE INDX ODM TOOLS USERS XDB 11 개의 행이 선택되었습니다. SQL> CREATE USER YASI IDENTIFIED BY YASI 2 DEFAULT TABLESPACE USERS 3 TEMPORARY TABLESPACE TEMP 4 QUOTA 5M ON USERS; 사용자가 생성되었습니다. SQL> GRANT CONNECT, RESOURCE TO YASI; 권한이 부여되었습니다. SQL> 기본적으로 YASI 사용자가 사용하는 테이블스페이스는 USERS이고 정렬등의 임시작업에 사용되는 테이블스페이스는 TEMP 테이블스페이스고, 그다음 USERS 테이블스페이스를 5M 까지 사용할 수 있다는 내용입니다.. }}}