Linux/SQL

[DBMS] DCL 명령어 정리 (계정 확인/생성/삭제 & 권한 확인/생성/삭제)

GGkeeper 2021. 11. 29. 23:31

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

DB에 대한 보안, 무결성, 복구 등 DBMS를 제어하기 위한 언어

GRANT(권한할당), REVOKE(권한해제), COMMIT(실행), ROLLBACK(복구)

COMMIT, ROLLBACK 은 트랜젝션에 관련된 언어로 TCL 로 구분하기도 함


• 계정 확인

mysql DB의 user Table 에서 DBMS 계정에 대한 정보를 관리

mysql> desc mysql.user ;

> 현재 선택된 DB와 다른 DB의 테이블을 조회 하고 싶은 경우 <DB명>.<테이블명> 으로 접근 가능

 

- mysql> select user, host, password from mysql.user;


• 계정 생성1

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

- mysql> flush privileges;

계정 정보 갱신

계정이나 권한에 대한 설정 변경 후에는 반드시 갱신해야 적용 됨


• 계정 생성2

mysql> insert into mysql.user( user, host, password ) values( ‘계정명' , ‘접속경로’ , password('비 밀번호') ); 

password( ) 함수를 이용해서 암호문으로 저장

mysql> flush privileges;


• 계정 비밀번호 설정

mysql> update mysql.user set password = password(' 비밀번호 ') where user='root';

password( ) 함수를 이용해서 암호문으로 저장

mysql> flush privileges;


• 계정 삭제

mysql> drop user ‘계정명’[@’접속경로’] ;

접속경로를 생략하면 ‘%’ 경로로 지정됨

mysql> flush privileges;


• 권한 확인

mysql> show grants [ for ‘계정명’@’접속경로’ ] ;

계정을 따로 지정하지 않으면 현재 접속된 계정의 권한 확인

show grants;

= 현재 접속된 계정의 권한을 확인

show grants for kuser1@localhost;

= kuser1 계정의 권한을 확인한다.


• 권한 구성 

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


• 권한 추가

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

해당 계정이 존재하는 경우 권한만 부여

해당 계정이 존재하지 않는 경우 자동으로 계정 생성 후 권한 부여


모든 DB의 모든 권한 허용

grant all privileges on *.* to root@200.200.200.% with grant option;

= root 계정에 모든 데이터베이스모든 테이블을 설정할 수 있는 권한을 전부 부여한다.


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

GRANT select(id, name), insert on naver_db.member to kuser1@localhost;

= localhost 의 kuser1 계정에 naver_db밑에 있는 member 테이블에 id 와 name 을 확인(select)하는 권한과 데이터 추가 (insert) 권한을 부여한다.


• 권한 삭제

mysql> REVOKE privileges[(columns)] ON item FROM ‘계정명'@’접속경로’

revoke select(id), insert on naver_db.member from kuser1@localhost;

= localhost 에 kuser1 에게 부여했던 naver_db 데이터베이스 밑에 member 테이블에서 id 확인 권한과 데이터를 추가할 수 있는 권한을 삭제한다.