티스토리 뷰

DB160705 아몰라 일단 쓰고봐 노트

C:\Documents and Settings\Administrator> set oracle_sid=orcl
C:\Documents and Settings\Administrator> sqlplus / as sysdba       --무조건 입장

SQL> alter user sys identified by ...;        --암호 수정
SQL> alter user sysem identified by ...;


SQL> alter user scott account unlock;      --계정 잠금 해제
SQL> alter user scott identified by ...;



계정 만들기

conn system/oracle     --system 계정으로 접근


create user user1 identified by pwd1;   --user1 계정을 만들고 암호는 pwd1

grant connect,resource to user1;        --DB에 접근이 허용되고, 자원 처리가 가능해지도록 권한 부여


user가 부여받은 권한 명세

select * from session_privs;





grant select,insert,update on abc to tom;

grant all on abc to user1, user2;   --모든 계정권한을 다줌.

revoke delete on abc from user1;  --권한을 뺏음.

revoke all on abc from user1;       -- 권한을 뺏음.


create table rain(bun number, ir char(10));   -- 테이블 생성

insert into rain values(1,'rain');   -- 행 생성


계정(사용자) 생성 및 권한, 보안 설정 - 시스템이나 시스계정을 가진 사람만 가능

계정 만드는 법 : create user 유저명 identified by 비밀번호

예 )   create user user1 identified by 123;        // 비밀번호가 123이고 유저명이 user1인 유저 생성


계정 삭제하는 법 : drop user 유저명;

예) drop user user1;           //user1의 계정을 삭제한다

만약 지우려는 사용자가 접속중이거나 테이블을 가지고 있으면 삭제 불가


cmd에서 사용자 넘어가기 : conn 유저명/패스워드

예) conn user1/123;


권한 주는 법 : grant 범위 to 사용자명;

grant connect to user1;                 user1에 연결할수 있는 권한    

grant resource to user1;                user1에 기본 기능을 줄수 있는 권한

grant create table to user1;             user1에 테이블을 만들수 있는 권한

grant all to user1;                           user1에 모든 권한을 줌


시스템 계정은 절대적인 권한이 있기때문에 다른 계정이 만든 테이블을 볼수 있다.

일반 계정에서 다른 계정의 테이블을 보는 것은 권한이 없이는 불가능하다.


사용자에게 테이블과 뷰에 대한 권한 주는 법 : grant 범위 on 테이블명(뷰명) to 유저

예) grant select on buser to user2;                 // user2에게 buser 테이블을 select 할수있는 권한을 줌

grant select,update on buser to user2,user1;   //user2와 user1에게 buser 테이블을 select과 update를 할수있는 권한을 줌

grant all on sawon to user1;                 // user1에게 사원 테이블에 대한 모든 권한을 줌

grant select on v1 to user1;                 // user1에게 v1(view)을 select 권한을 줌


권한을 취소 하는 법 : revoke 범위 on 테이블 from 사용자

예) revoke all on sawon from user1;        // user1의 사원 테이블에 대한 모든 권한을 취소함







roll ( 사용자 그룹 )

각각의 사용자에게 권한을 줬다 뺐었다 할 수 있고, 롤(그룹)에게도 권한을 줬다 뺐었다 할 수 있다,

롤(그룹)안에 있는 모든 사용자에게 영향이 간다.



create role insa;   -- 롤 생성

grant insa to tom, tom2;   -- 롤 권한 부여

revoke insa from tom, tom2; -- 롤 권한 취소


role 만드는 법 : create role 롤명

롤을 쓰는 이유는 한명씩 따로따로 권한을 주기 힘들기 때문에 비슷한 집단을 만들어서 한번에 권한을 주기 위해

예) create role insa;                  // 롤명이 insa인 롤 생성


생성한 role에 사용자 추가하는 법 : grant 롤명 to 유저명;

예) grant insa to user1;         -- insa라는 이름을 가진 롤에 사용자명이 user1인 유저 추가

grant broadcast to mbc;       -- broadcast라는 이름을 가진 롤에 사용자명이 mbc인 유저 추가


생성한 role에 테이블 권한 주기 : grant 범위 on 테이블명 to 롤명

예) grant select on gogek to insa;         // insa 롤에 gogek테이블을 select 할수 있는 권한 을 줌


role 삭제하는 법 : drop role 롤명;

* 롤을 삭제해도 그 안에 있는 사용자는 삭제가 되지 않고 롤에 있던 권한이 사라진다.

예)drop role insa;                    // insa롤을 삭제한다.








-------------------
Synonym(동의어)
-------------------

A. 개념
- 동의어(Synonym)은 Table, View, SnapShot,Sequence,Procedure, Function, Package에 
대한 별칭이다.
- 공용 및 전용 동의어의 두가지 종류가 있다. 공용동의어는 public이라는 특정사용자 그룹에서
소유하며 DB의 모든 사용자가 사용할수 있다. 전용동의어는 다른 사용자에 대해 전용동의어의 
가용성을 제어할수 있는 특정 사용자의 스키마에 들어있다.
B. 생성
- 예를들어 scott의 Schema에 포함된 Emp Table에 대해 puiblic_emp라는 공용 Synonym생성
- Create public synonym public_emp for scott.emp;
- 이상과 같이 공용으로 생성하면 Oracle의 다른 사용자는 public_emp라는 별칭을 사용하여
Query 할수있다.
- tiger라는 User는 public_emp라는 별칭을 사용하여 다음과 같이 Query 할수있다.
Sqlplus>select * from public_emp;
C. 삭제
- drop public synonym public_emp

-----------------------------------------------------------------------
만약 Synonym이 전용이라면 생성과 삭제시 public이라는 Option을 안쓰면 된다



Synonym(동의어) - 다른 사용자의 테이블을 사용할 때 사용자명.테이블명을 쓰는 데 불편해서 별명을 주는것

synonym 종류는 공개(public), 비공개가 있다.

insa 롤에 사용자 user1과 user2가 있는데 user1에서 bu2를 공개(public synonym)으로 만들면 같은 롤안에 있는 user2도 bu2를 사용 가능하다.

하지만 user1에서 bu를 비공개 synonym으로 만들면 user1에서는 bu 사용이 가능하지만 user2에서는 불가능하다.

비공개 synonym의 삭제는 만들었던 사용자에서 가능하지만

공개(public synonym) 삭제는 system에서 해야한다.




 grant create synonym to tom;    -- 권한 부여

 create synonym abctab for scott.abc;             -- 동의어 생성

 create public synonym abctab2 for scott.abc;    -- 동의어 생성


 비공개 synonym 만드는 방법 : create synonym 이름 for 사용자명.테이블명

 예) create synonym bu for scott.buser;

 공개 synonym 만드는 방법 : create public synonym 이름 for 사용자명.테이블명

 예) create public synonym bu2 for scott.buser;


 생성 후

 abctab ---> scott.abc    명렁문 ---> 사용되는

 abctab2 ---> scott.abc


 rename abc to kbs;   -- abc테이블을 kbs로 이름을 바꿔줌

 

 synonym은 원본테이블을 참조하여 사용하는 것인데, 원본테이블의 이름을 바꿔버리면 의미가 사라진다.


 pulic으로 테이블을 만들면 어디서든 먹힌다. (전역)

 synonym은 만든 user가 지울 수 있다.

 

 비공개 synonym 삭제하는 방법 : drop synonym 동의어명

 예) drop synonym bu;             -- 비공개 synonym은 생성한 테이블에서 가능

 공개(public synonym) 삭제하는 방법 : drop public synonym 동의어명

 * system 계정에서만 가능하다

 예) drop public synonym bu2;



 

 






'📁 공부정리 > DB' 카테고리의 다른 글

DB160705 일단 쓰고보자 (SQL / PL)  (0) 2016.07.05
DB 160630  (0) 2016.06.30
DB 160628  (0) 2016.06.28

Recent Comments