요약 |
|
계정 생성 CREATE USER 유저이름 IDENTIFIED BY 패스워드 |
권한 종류 system privilege & object privilege |
권한부여&회수 grant 권한 (on 테이블명) to 사용자명 ,revoke 권한 (on object명) from 사용자명 |
DCL정의 권한에 대해 부여&회수하는 명령어 |
타계정 UPDATE update 소유주.테이블명 |
PASSWORD EXPIRE password expire 절 |
계정 lock alter user 유저명 account lock; |
생성된 계정과 데이터의 상관관계 계정 지우면 계정에서 만든 연관된 data 전부 삭제된다. |
------------------------------------------------------------------------------------------------------------------------------------- |
-------------------------------------------------------------------------------------------------------------------------------------- |
계정 생성 |
|
|
|
CREATE USER 유저이름 <-관리자 권한이다. CONN system/oracle 접속 후 부여 하기 |
IDENTIFIED BY 패스워드 |
|
|
하지만 권한을 설정해 주어야 이용할수있다 . |
위의 것은 접속 권한만 준것이다. |
------------------------------------------------------------------------------------------------------------------------------------ |
|
권한의 종류? |
|
system privilege : db전체에 영향을 주는 권한, 모든권한 ex) system 관리자 |
object privilege : 특정 object(ex)table)에만 주어지는 권한 ex) 생성자 |
|
------------------------------------------------------------------------------------------------------------------------------------ |
*DCL(DATA CONTROL LANGUAGE) :권한부여,회수에 대해 실행하는 명령이다 . |
DCL은 DDL과 같이 AUTOCOMMIT된다. |
부여하는 명령 GRANT 권한 TO 사용자명 ; |
grant 권한 on object명 to 사용자명 (object privilege) |
|
|
|
회수하는 명령 REVOKE 권한 FROM 사용자명; |
revoke 권한 on object명 from 사용자명; |
ex) grant connect,resource <-접속,자원에 대한 권한을 부여한다 . |
|
하지만 select*from emp하면 나오지 않는데 왜그럴까? |
|
|
TABLE형엔 SCHEMA라는것이 와야한다. |
|
SELECT * FROM SCHEMA EMP; |
DB에서 OBJECT를 저장할 수 있는 DOMAIN을 말한다. |
|
|
SCHEMA의 이름은 사용자의 이름과 같다. |
|
=> SELECT*FROM SCOTT.EMP; <-자기것이라면 생략 가능. |
|
|
|
그래도 안나오는데 왜그럴까???? |
|
보안때문에 존재하지 않는것처럼 나오게 된다 . 그래서 특정 테이블의 소유주에게 권한 허락을 받아야 한다. |
(관리자도 권한주기가 가능하다.) |
|
grant 권한 on object명 to 사용자명 (object privilege) |
SQL> conn scott/tiger |
연결되었습니다. |
SQL> grant select on emp to user1; |
|
------------------------------------------------------------------------------------------------------------------ |
update 하기 |
먼저 권한을 부여받지 못했기 때문에 나오는 오류 |
SQL> update scott.emp |
2 set sal=100; |
update scott.emp |
* |
1행에 오류: |
ORA-01031: 권한이 불충분합니다. |
|
|
그래서 |
|
SQL> grant update on emp to user1; <-SCOTT으로 접속해 권한을 부여하고나서 |
|
|
SQL> UPDATE SCOTT.EMP <-다시 접속해 update를 실행하면 |
2 SET SAL=100; |
|
원하는 정보가 나온다. |
------------------------------------------------------------------------------------------------------------------ |
권한 회수하기 |
revoke 권한 on 테이블 or view from 사용자 |
SQL> revoke select,update on emp from user1; <-특정 객체급 권한 회수 |
|
권한이 취소되었습니다. |
|
SQL> revoke connect from user1; |
SQL> revoke resource from user1; <-관리자급권한 회수 |
|
|
|
---------------------------------------------------------------------------------------------------------------------- |
PASSWORD EXPIRE 기능 |
|
사용자가 임시 비밀번호를 변경하도록 하는 것. |
비밀번호를 관리자가 부여해도 그대로 쓰지않고 일부러 만료가 가까운 |
비밀번호를 만들어주어 사용자가 자신만의 비밀번호를 설정하도록 |
|
|
SQL> CONNECT USER2/TIGER |
ERROR: |
ORA-28001: the password has expired |
|
|
SQL> CREATE USER USER2 |
2 IDENTIFIED BY TIGER |
3 PASSWORD EXPIRE <- PASSWOR EXPIRE기능에 대한 명령어 |
4 ACCOUNT UNLOCK; |
|
사용자가 생성되었습니다. |
|
SQL> GRANT CONNECT,RESOURCE TO USER2; |
|
|
SQL> CONNECT USER2/TIGER |
ERROR: |
ORA-28001: the password has expired |
|
|
USER2에 대한 비밀번호를 변경합니다. |
새 비밀번호: |
새 비밀번호 다시 입력: |
비밀번호가 변경되었습니다. |
연결되었습니다. |
|
|
변경 가능한 사용자 SYSTEM,SYS,본인 |
|
ALTER USER USER2 |
IDENTIFIED BY TIGER |
|
SQL> PASSWORD <-본인은 PASSWORD 키워드로도 바꿀 수있다. |
USER2에 대한 비밀번호를 변경합니다. |
이전 비밀번호: |
새 비밀번호: |
새 비밀번호 다시 입력: |
비밀번호가 변경되었습니다. |
|
|
|
--------------------------------------------------------------------------------------------------------------------------------- |
|
계정과 생성된 데이터의 상관관계 |
ex) |
|
SQL> create table emp |
2 (empno number(4)); |
|
테이블이 생성되었습니다. |
|
SQL> insert into emp values(1111); |
|
1 개의 행이 만들어졌습니다. |
|
SQL> commit; |
|
커밋이 완료되었습니다. |
|
만약 user를 지우면 어떻게 될까? |
|
SQL> conn system/oracle |
연결되었습니다. |
SQL> drop user user2; |
|
|
user를 지우면 지목된 user가 만든 모든 object가 삭제된다. |
워낙 큰일이라 지우려고하면 안전장치인 cascade가 있다. <- OBJECT가 한개라도 있을 경우. |
*CASCADE |
|
SQL> drop user user2; |
drop user user2 |
* |
1행에 오류: |
ORA-01922: 'USER2'(을)를 삭제하려면 CASCADE를 지정하여야 합니다. |
|
|
SQL> DROP USER USER2 CASCADE; <- CASCADE를 넣어야 삭제. |
|
사용자가 삭제되었습니다. |
|
|
*lock 기능 |
회사의 정보 보안을 위해 나간 직원의 계정을 삭제 해야만 하는 일이 벌어지는데 |
삭제하지않고도 정보를 보호할 수 있는 lock기능을 사용한다. |
|
*drop을 안쓰기위해 계정 잠그기 쓰기 <-계정 보안을 위해 |
SQL> alter user scott |
2 account lock; |
|
|
|
|
SQL> conn scott/tiger |
ERROR: |
ORA-28000: the account is locked |
|
|
lock풀기 |
SQL> alter user scott |
2 account unlock; |
|
사용자가 변경되었습니다. |