DCL(Data Control Language) - 데이터 제어어
데이터베이스에 접근하거나 객체에 권한을 주는 등의 역할을 하는 언어를 입니다.
종류 | 역할 |
GRANT | 특정 데이터베이스 사용자에게 특정 작업에 대한 사용권한 부여 한다. |
REVOKE | 특정 데이터베이스 사용자에게 특정 작업에 대한 사용권한을 취소 한다. |
COMMIT | 명령어에 의해 수행된 결과를 실제 물리적 디스크로 저장하고, 데이터베이스 조작 작업이 정상적으로 완료되었음을 관리자에게 알려준다. |
ROLLBACK | 트랜잭션의 조작작업이 비정상적으로 종료되었을 때 원래의 상태로 복구한다. |
먼저, 새로운 사용자 계정을 추가하고 권한부여, 권한취소를 실행해 보겠습니다.
▶ 사용자 조회
use mysql;
mysql> select user, host from user;
▶ 사용자 계정 생성
CREATE USER '사용자ID'@'host' IDENTIFIED BY 'password';
-- 아이디 'tester', 비밀번호 'test1234' 사용자 계정 생성
CREATE USER tester@localhost IDENTIFIED BY 'test1234';
▶ 사용자 계정 정보 확인
SHOW GRANTS FOR '사용자ID'@'host';
-- 'tester'사용자 계정의 권한 조회
SHOW GRANTS FOR tester@localhost;
1. GARNT - 사용자에게 권한 부여
GRANT 사용자등급 ON 테이블명 TO 사용자ID [IDENTIFIED BY 비밀번호]; GRANT 권한리스트 ON 테이블명 TO 사용자ID [WITH GRANT OPTION]; |
▶ 사용자 등급
사용자 등급 | 내용 |
CONNECT | DBMS에 접속하기 위한 권한 부여 |
RESOURCE | 사용자(tester)가 객체(생성, 수정, 삭제), 데이터(입력, 수정, 조회, 삭제) 권한 부여 |
DBA | ALL (시스템 관리에 앞서 필요한 모든 권한 부여) |
▶ 권한 종류 : ALL, SELECT, INSERT, DELETE, UPDATE, ALTER 등
- 이외에도 많은 시스템 권한을 줄 수 있다 > 더 많은 시스템 권한 보러 가기
▶ WITH GRANT OPTION : 부여받은 권한을 다른 사용자에게 다시 부여할 수 있는 권한을 부여한다.
-- 'tester' 사용자 계정에게 모든 테이블에 대한 모든 권한을 부여한다.
mysql> GRANT ALL ON *.* To tester;
-- 'tester' 사용자 계정에게 'notice' 테이블에 대한 모든 권한을 부여하고, 다른 사람에게 권한을 부여할 수 있는 권한까지 부여한다.
mysql> GRANT ALL ON notice TO tester WITH GRANT OPTION;
-- test 데이터베이스의 모든 테이블에 대해 데이터 조회와 갱신만 가능하다.
mysql> GRANT SELECT, UPDATE ON test.* TO tester;
7. REVOKE - 사용자 권한 취소
REVOKE 사용자등급 ON 테이블명 FROM 사용자ID; REVOKE [GRANT OPTION FOR] 권한리스트 ON 테이블명 TO 사용자ID [CASCADE]; |
▶ GRANT OPTION FOR : 다른 사용자에게 권한을 부여할 수 있는 권한을 취소한다.
▶ CASCADE : 권한 취소 시 권한을 부여받았던 사용자가 다른 사용자에게 부여한 권한도 연쇄적으로 취소한다.
-- 'tester' 사용자 계정의 모든 테이블에 대한 모든 권한을 취소한다.
REVOKE all ON *.* FROM tester;
-- 'tester' 사용자 계정의 'notice' 테이블에 대한 권한 중, update 권한을 다른 사람에게 부여할 수 있는 권한만 취소한다.
REVOKE GRANT OPTION FOR update ON notice FROM tester;
'데이터베이스 > MySQL' 카테고리의 다른 글
[MySQL] 데이터 사전(Data Dictionary) (0) | 2021.06.02 |
---|---|
[MySQL] DCL 활용(2) - 트랜잭션 COMMIT, ROLLBACK (0) | 2021.06.01 |
[MySQL] DML 활용 - 테이블에 데이터(튜플) 추가, 수정, 삭제하기 (0) | 2021.06.01 |
[MySQL] SQL 제약조건 종류 (0) | 2021.05.31 |
[MySQL] SQL 데이터타입 자료형 종류 (0) | 2021.05.31 |