블로그 내의 모든 예시와 실습은 VMware workstation16.2.3, Centos7을 활용 합니다.

데이터 제어어(DCL, Data Control Language)

  • DB에 대한 보안, 무결성, 복구 등 DBMSㄹ ㄹ 제어하기 위한 언어
  • GRANT(권한할당), REVOKE(권한해제),COMMIT(실행), ROLLBACK(복구)
  • COMMIT,ROLLBACK은 트랜젝션에 관련된 언어로 TCL로 구분하기도 한다.

계정 확인

  • mariaDB의 user Table에서 DBMS 계정에 대한 정보를 관fl
  • mariadb> desc mysql.user;
    • 현재 선택된 DB와 다른 DB의 테이블을 조회하고 싶은 경우 (DB명).(테이블명)으로 접근 가능

dcl1

  • mariadb> select user,host,password from mysql.user;

dcl2

컬럼 설명
user 계정 명
host 접속 경로
password 비밀번호


  • 접속 경로
컬럼 설명
localhost DBMS가 설치된 로컬 시스템에서의 접속
% 모든 네트워크에서의 접속
IP+% 특정 네트워크 영역에서의 접속
IP 특정 IP를 가진 시스템에서의 접속

계정 생성1

  • mariadb>create user ‘user명’@’접속경로’ [identified by ‘패스워드’];

dcl3

  • mariadb> flush privileges;

dcl4

계정 생성2

  • mariadb> insert into mysql.user(user, host,password) values(‘계정명’,’접속경로’,password(‘비밀번호’));
    • password() 함수를 이용해서 암호문으로 저장

dcl5

계정 비밀번호 설정

  • mariadb> update mysql.user set password = password(‘비밀번호’) where user=’root’;
    • password() 함수를 이용해서 암호문으로 저장

dcl6

계정 삭제

  • mariadb> drop user ‘계정명’[@’접속경로’];
    • 접속경로를 생략하명 ‘%’경로로 지정된다.

dcl7

권한 확인

  • mariadb> show grants [for ‘계정명’@’접속경로’];
    • 계정을 따로 지정하지 않으면 현재 접속된 계정의 권한 확인

dcl8

권한 구성

GRANT privileges[(columns)]|ON item TO ‘계정명’@’접속경로’ [IDENTIFIED BY ‘비밀번호’] [WITH GRANT OPTION]

구성요소 설명
privileges[(columns)] 설정할 권한
all privileges : 모든 권한
특정권한 [, …] : 특정 권한(insert,select, … 등 SQL)
특정궈한(특정컬럼) : 특정 컬럼에만 특정 권한 설정
usage : 기본권한
item 권한을 설정할 객체
[DB명],[테이블명]
ex). - 모든 DB의 모든 테이블
‘계정명’@’접속경로’ 권한을 설정할 계정
[IDENTIFIED BY ‘비밀번호’] 권한을 부여하면서 비밀번호 변경(생략 가능)
[WITH GRANT OPTION] 다른 계정의 권한을 변경할 수 있는 권한을 허가(생략 가능)

권한 추가

  • mariadb> GRANT privileges[(columns)] ON item TO ‘계정명’@’접속경로’[IDENTIFIED BY ‘비밀번호’][WITH GRANT OPTION]
  • 해당 계정이 존재하는 경우 권한만 부여
  • 해당 계정이 존재핮 않는 경우 자동으로 계정 생성 후 권한 부여

  • 모든 DB의 모든 권한 허용

dcl9

  • 특정 DB의 특정테이블의 특정 컬럼 조회 권한만 주기

dcl10

  • root 계정 접속 종료 후 user1 계정으로 접속

dcl11

권한 삭제

  • mariadb> REVOKE PRIVILEGES[(columns)] ON item FROM ‘계정명’@’접속경로’

dcl12