사용자 조회
select * from ALL_USERS;
사용자 생성 | 삭제
SQL> CREATE USER alexpark ... ① ...
IDENTIFIED BY park1234 ... ② ...
DEFAULT TABLESPACE USR; ... ③ ...
////////////////////////////////////////////////////
SQL> DROP USER alexpark CASCADE; ... ④ ...
① CREATE USER 문을 사용하여 alexaprk라는 사용자를 생성한다.
② 사용자 Steve의 패스워드를 park1234로 설정한다. CREATE USER 문을 사용할 때에는 반드시 패스워드를 설정해야 한다.
③ 디폴트 테이블스페이스를 USR로 설정한다.
④ 제거된 사용자의 스키마 객체를 참조하는 뷰나 동의어, 프러시저, 함수는 모두 INVALID 상태가 된다. 나중에 동일한 이름의 다른 사용자가 만들어지면 새로운 사용자는 그 이름을 가졌던 이전 사용자로부터 아무것도 상속받지 못한다.
특권 (스키마) 부여
GRANT SELECT , UPDATE ON EMPLOYEE TO alexpark; ... ① ...
GRANT SELECT , UPDATE (EMP_NAME , EMP_ADRESS) ON EMPLOYEE TO alexpark; ... ② ...
GRANT SELECT ON EMPLOYEE TO alexpark WITH GRANT OPTION; ... ③ ...
① select, update를 alexpark유저가 사용 가능하다.
② 유저 alexpark 에게 EMPLOYEE테이블에 select 명령어가 사용 가능하게 한다, 이때 칼럼EMP_NAME, EMP_ADRESS에 한하여 update가 허용된다
③ select 를 alexpark이 다른 유저에게 grant 가능하다.
스키마 객체 특권은 스키마 객체인 테이블, 뷰, 시퀀스, 동의어 등에 접근하는 것을 제어하는 권한.
스키마 객체 특권은 GRANT 명령을 사용해 다른 사용자에게 부여할 수 있으며, 그 내용은 데이터 사전에 기록된다.
스키마 객체 특권은 다음과 같다.
스키마 객체 특권 설명
SELECT | 테이블을 조회하는 권한이다. |
INSERT | 테이블에 로우를 삽입하는 권한이다. |
UPDATE | 테이블에 로우를 갱신하는 권한이다. |
DELETE | 테이블에 로우를 삭제하는 권한이다. |
ALTER | 스키마 객체의 특성을 변경하는 권한이다. |
INDEX | 테이블에 인덱스를 생성하는 권한이다. |
REFERENCES | 테이블을 참조하는 제약조건을 생성하는 권한이다. |
TRUNCATE | 테이블에 TRUNCATE를 수행할 수 있는 권한이다. |
이 권한을 사용하려면 USE_TRUNCATE_PRIVILEGE 파라미터를 'Y'로 설정해야 한다. |
특권 (시스템) 부여
GRANT SELECT ANY TABLE TO Alex; ... ① ...
GRANT SELECT ANY TABLE TO Susan WITH ADMIN OPTION; ... ② ...
REVOKE SELECT ANY TABLE FROM Susan; ... ③ ...
① ‘임의의 스키마에 속한 테이블을 조회하는 권한’을 Alex에게 부여한다
② ‘임의의 스키마에 속한 테이블을 조회하는 권한’을 Susan이 다른 유저에게 부여 가능하다
③ Susan에게 조회권한을 박탈한다 시스템 특권은 상위 유저의 권한을 박탈한다고, 해당 유저에게 권한을 부여받은 유저의 권한이 일괄적으로 박탈당하지 않기에 개별적으로 처리해야한다.
시스템 특권 설명
ALTER SYSTEM | ALTER SYSTEM 문을 실행할 수 있는 권한이다. |
CREATE SESSION | 데이터베이스에 세션을 생성할 수 있는 권한이다. 즉, 로그인이 가능하다는 것을 의미한다. |
CREATE USER | 사용자를 생성하는 권한이다. |
ALTER USER | 사용자의 정보를 변경하는 권한이다. |
DROP USER | 사용자를 제거하는 권한이다. |
CREATE TABLESPACE | 테이블스페이스를 생성하는 권한이다. |
ALTER TABLESPACE | 테이블스페이스를 변경하는 권한이다. |
DROP TABLESPACE | 테이블스페이스를 제거하는 권한이다. |
SELECT ANY DICTIONARY | DICTIONARY를 조회할 수 있는 권한이다. 이 권한을 할당 받으면 SYS, SYSCAT, SYSGIS 소유의 객체들을 조회할 수 있다. |
CREATE TABLE | 자신의 스키마에 테이블을 생성하는 권한이다. |
CREATE ANY TABLE | 임의의 스키마에 테이블을 생성하는 권한이다. |
ALTER ANY TABLE | 임의의 스키마에 속한 테이블을 변경하는 권한이다. |
DROP ANY TABLE | 임의의 스키마에 속한 테이블을 제거하는 권한이다. |
COMMENT ANY TABLE | 임의의 스키마에 속한 테이블에 주석을 추가하는 권한이다. |
SELECT ANY TABLE | 임의의 스키마에 속한 테이블을 조회하는 권한이다. |
INSERT ANY TABLE | 임의의 스키마에 속한 테이블에 로우를 삽입하는 권한이다. |
UPDATE ANY TABLE | 임의의 스키마에 속한 테이블에 로우를 갱신하는 권한이다. |
DELETE ANY TABLE | 임의의 스키마에 속한 테이블에 로우를 제거하는 권한이다. |
TRUNCATE ANY TABLE | 임의의 스키마에 속한 테이블에 TRUNCATE를 수행 할 수 있다. 이 권한을 사용하기 위해서는 USE_TRUNCATE_PRIVILEGE 파라미터를 'Y'로 설정해야 한다. |
CREATE ANY INDEX | 임의의 스키마에 속한 테이블에 인덱스를 생성하는 권한이다. |
ALTER ANY INDEX | 임의의 스키마에 속한 테이블에 인덱스를 수정하는 권한이다. |
DROP ANY INDEX | 임의의 스키마에 속한 테이블에 인덱스를 제거하는 권한이다. |
CREATE SYNONYM | 자신의 스키마에 동의어를 생성하는 권한이다. |
CREATE ANY SYNONYM | 임의의 스키마에 동의어를 생성하는 권한이다. |
DROP ANY SYNONYM | 임의의 스키마에 속한 동의어를 제거하는 권한이다. |
SYSDBA | SHUTDOWN, ALTER DATABASE, CREATE DATABASE, ARCHIVELOG, RECOVERY 문을 실행할 수 있는 권한이다. |
CREATE PUBLIC SYNONYM | PUBLIC 스키마에 동의어를 생성하는 권한이다. |
DROP PUBLIC SYNONYM | PUBLIC 스키마에 속한 동의어를 제거하는 권한이다. |
CREATE VIEW | 자신의 스키마에 뷰를 생성하는 권한이다. |
CREATE ANY VIEW | 임의의 스키마에 뷰를 생성하는 권한이다. |
DROP ANY VIEW | 임의의 스키마에 속한 뷰를 제거하는 권한이다. |
CREATE SEQUENCE | 자신의 스키마에 시퀀스를 생성하는 권한이다. |
CREATE ANY SEQUENCE | 임의의 스키마에 시퀀스를 생성하는 권한이다. |
ALTER ANY SEQUENCE | 임의의 스키마에 속한 시퀀스를 변경하는 권한이다. |
DROP ANY SEQUENCE | 임의의 스키마에 속한 시퀀스를 제거하는 권한이다. |
SELECT ANY SEQUENCE | 임의의 스키마에 속한 시퀀스를 조회하는 권한이다. |
CREATE ROLE | 역할을 생성하는 권한이다. |
DROP ANY ROLE | 역할을 제거하는 권한이다. |
GRANT ANY ROLE | 임의의 역할에 부여하는 권한이다. |
ALTER ANY ROLE | 역할을 수정하는 권한이다. |
ALTER DATABASE | 데이터베이스를 변경하는 권한이다. |
CREATE PROCEDURE | 자신의 스키마에 프러시저를 생성하는 권한이다. |
CREATE ANY PROCEDURE | 임의의 스키마에 프러시저를 생성하는 권한이다. |
ALTER ANY PROCEDURE | 임의의 스키마에 속한 프러시저를 변경하는 권한이다. |
DROP ANY PROCEDURE | 임의의 스키마에 속한 프러시저를 제거하는 권한이다. |
EXECUTE ANY PROCEDURE | 임의의 스키마에 속한 프러시저를 실행하는 권한이다. |
CREATE TRIGGER | 자신의 스키마에 속한 트리거를 생성하는 권한이다. |
CREATE ANY TRIGGER | 임의의 스키마에 속한 트리거를 생성하는 권한이다. |
ALTER ANY TRIGGER | 임의의 스키마에 속한 트리거를 변경하는 권한이다. |
DROP ANY TRIGGER | 임의의 스키마에 속한 트리거를 제거하는 권한이다. |
GRANT ANY OBJECT PRIVILEGE | 모든 스키마 객체에 대한 특권을 가지는 권한이다. |
GRANT ANY PRIVILEGE | 모든 특권을 전부 부여할 수 있는 권한이다. |
특권 회수
REVOKE DELETE ON EMPLOYEE FROM Peter; [스키마]
REVOKE SELECT ANY TABLE FROM Susan; [시스템]
REVOKE ALL ON EMPLOYEE FROM John; [전부]
특권 조회 변수명
sql> select * from USER_SYS_PRIVS
.
##OR
SQL> SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE IN ('TEST1','TEST2');
GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE
---------- --------------- --------------- ---------------
TEST1 CONNECT NO YES
TEST1 RESOURCE NO YES
TEST2 CONNECT NO YES
3 rows selected.
.
정적 뷰 설명
DBA_SYS_PRIVS | 사용자에게 부여된 모든 특권의 정보를 조회하는 뷰이다. |
USER_SYS_PRIVS | 현재 사용자에게 부여된 특권의 정보를 조회하는 뷰이다. |
DBA_TBL_PRIVS | 데이터베이스 내의 모든 스키마 객체 특권의 정보를 조회하는 뷰이다. |
USER_TBL_PRIVS | 현재 사용자가 소유한 모든 스키마 객체 특권의 정보를 조회하는 뷰이다. |
ALL_TBL_PRIVS | 현재 사용자가 소유한 모든 스키마 객체 특권과 모든 사용자가 사용할 수 있도록 공개한 모든 스키마 객체 특권의 정보를 조회하는 뷰이다. |
DBA_COL_PRIVS | 데이터베이스 내의 모든 스키마 객체 특권 중 스키마 객체의 특정 컬럼에 부여된 특권의 정보를 조회하는 뷰이다. |
USER_COL_PRIVS | 현재 사용자가 소유한 스키마 객체 특권 중 스키마 객체의 특정 컬럼에 부여된 특권의 정보를 조회하는 뷰이다. |
ALL_COL_PRIVS | 현재 사용자가 소유한 스키마 객체 특권 또는 모든 사용자가 사용할 수 있도록 공개한 모든 스키마 객체 특권 중 스키마 객체의 특정 컬럼에 부여된 특권의 정보를 조회하는 뷰이다. |
USER_COL_PRIVS_MADE | 현재 사용자 소유한 객체 중 특정 컬럼에 부여된 특권의 정보를 조회하는 뷰이다. |
ALL_COL_PRIVS_MADE | 현재 사용자가 만든 특권 중 스키마 객체의 특정 컬럼에 부여된 특권의 정보를 조회하는 뷰이다. |
USER_COL_PRIVS_RECD | 현재 사용자에게 부여된 모든 스키마 객체 특권 중 스키마 객체의 특정 컬럼에 부여된 특권의 정보를 조회하는 뷰이다. |
ALL_COL_PRIVS_RECD | 현재 사용자 또는 PUBLIC 사용자에게 부여된 모든 스키마 객체 특권 중 스키마 객체의 특정 컬럼에 부여된 특권의 정보를 조회하는 뷰이다. |
티베로 기본 롤 (grant 로 활용)
CONNECT - CREATE SESSION 접근권한
RRSOURCE - CREATE PROCEDURE, SEQUENCE , TABLE , TRIGGER
DBA - andmin option
'DB > SQL' 카테고리의 다른 글
Redo Log 사이즈 변경하기 (0) | 2023.09.13 |
---|---|
[SQL] like % _ escape 문 (0) | 2023.08.08 |
mysql 명령어 (0) | 2021.06.21 |
[프로그래머스] DATETIME에서 DATE로 형 변환 (like ) (1) | 2021.02.06 |
[프로그래머스] 오랜 기간 보호한 동물(2) (like ) (0) | 2021.02.06 |