[Oracle] 오라클 #23, account(사용자) 관련 SQL

사용자 관련 SQL

- DCL의 한 부분

- 계정 생성 + 삭제

- 리소스 접근 권한 제어

사용자 계정 생성하기

- 시스템 권한을 가지고 있는 계정만 가능하다.


새 계정 관리하기

- create user 계정명 identified by 암호; 계정 생성 + 암호지정

- alter user 계정명 identified by 암호;  암호 수정

- drop user 계정명; 계정 삭제


- 프로젝트 용도 > 계정(스키마) 생성 > 작업공간 별도로 생성( 즉 프로젝트마다 계정을 만들어서 각각의 계정별 DB를 따로 관리)


- hr 계졍 로그인해서 다음의 쿼리를 입력!

create user team identified by java1234; --> 안됨 왜냐면 시스템 권한이 없는 계정으로 해서.(hr은 권한이 없음)


- system계정

show user; "USER이(가) SYSTEM입니다.

create user team identified by java1234; --> team이라는 계정을 생성하고 암호를 java1234라고 한다.


각종 권한 관리하기


- 권한(privileges) 부여하기(할당하기)

ex) grant 권한 to 유저명;

grant create session to team; --> team 계정에게 session을 생성할 수 있는 권한을 부여 > 접속권한


1. system으로 변경

grant create table to team; --테이블 생성 권한(수정+삭제 포함)

grant create view to team;  --뷰 생성 권한

grant create sequence to team;--시퀀스 생성권한


2. 롤(role)역할 관리하기

- 권한 집합

1. connect : 사용자가 DB 접속 권한

2. resource :사용자가 객체를 조작할 수 있는 권한 모음.

3. dba :관리자급 계정 권한 모음


ex) grant resource to team;



create table tblTeam

(

    seq number primary key,

    data varchar2(100) not null

); --ORA-01031: insufficient privileges (불충분한 권한) 테이블 만들 권한이 없다. -1-



계정 추가하기(일반계정)

1. 계정생성

create user user1 identified by java1234;


2. 권한부여

grant connect to user1; 

grant resource to user1; 

grant create view to user1; 


select * from dba_roles;


>> select grantee, privilege from dba_sys_privs where grantee ='RESOURCE';


>> select grantee, privilege from dba_sys_privs where grantee ='CONNECT';


>> select grantee, privilege from dba_sys_privs where grantee ='DBA';



객체 권한 관리하기

- 테이블, 뷰, 시퀀스 등에 대해서 객체별로 DML을 사용할 수 있는 권한 제어

ex) grant 권한 on 대상 to 유저;


- system 계정 

grant select on hr.tblInsa to team;

grant delete on hr.tblInsa to team;

delete from hr.tblInsa where num=1001; 

>> system 계정으로 로그인해도 hr계정에 있는 오브젝트들을 DML사용할 수 있음.


- team

select * from tabs;

select * from hr.tblInsa; --다른계정의 자원은 반드시 소속(계정명.스키마명)을 명시해야한다.


권한 뺏기

revoke delete on hr.tblInsa from team; 

>> team 계정에게서 hr.tblInsa 테이블에 대한 삭제 DML 권한을 빼앗는다.


revoke create session from team;

>> team 계정의 DB접속 권한을 제거


DB를 이용한 팀프로젝트할 떄는 이렇게하자

- 팀계정 > 권한부여(connect,resource, create, view)


유저 삭제

drop user team cascade; >> 어떤 제약조건이 걸려있든 다 떼버리고 team 계정을 삭제한다.

drop user user1;  >> user1 삭제

댓글

Designed by JB FACTORY