[MySQL] Data Control Language (데이터 제어 언어)

김재현·2022년 9월 15일
0

sql

목록 보기
6/12
post-thumbnail
post-custom-banner

MySQL에서 데이터 제어 언어(DCL : Data Control Language)에 대해 학습한 내용을 정리해보았습니다.

1. 유저 조회, 생성, 삭제

1.1 유저 조회

MySQL에 접속할 수 있는 유저를 확인하기 위해서는 데이터베이스 중 'mysql'에 접근하여 확인해볼 수 있습니다.

'mysql' 데이터베이스에 있는 테이블 중 'user' 테이블에 host와 user 컬럼을 불러오면 유저의 목록을 조회할 수 있습니다.

1.2 유저 생성

# 현재 PC에서 접속이 가능한 유저 생성 (ex. 패스워드 1234)
CREATE USER 'test_1'@'localhost' identified by '1234';

# 외부에서 접속이 가능한 유저 생성 (ex. 패스워드 1234)
CREATE USER 'test_2'@'%' identified by '1234';

새로운 유저를 생성하고 싶다면 로컬에서 접근을 할 것 인지, 외부에서 접근할 것인지 확인을 한 후 위의 명령문을 작성하여 생성할 수 있습니다. 생성 후 SELECT으로 유저 생성이 성공적으로 완료되었는지 확인해보았습니다.

1.3 유저 삭제

# 현재 PC에서 접속이 가능한 유저 삭제
DROP USER 'test_1'@'localhost';

# 외부에서 접속이 가능한 유저 삭제
DROP USER 'test_2'@'%';

DROP USER 명령어를 통해 위에서 만들어두었던 유저를 삭제할 수 있습니다. 삭제 후 SELECT을 사용하여 삭제가 완료되었는지 확인해보았습니다.


2. GRANT : 권한 부여

# 유저에게 부여된 권한 조회
SHOW GRANTS FOR 'username'@'localhost';
SHOW GRANTS FOR 'username'@'%';

# 권한 부여
GRANT ALL ON dbname.* to 'username'@'localhost';
GRANT ALL ON dbname.* to 'username'@'%';

유저에게 특정 데이터베이스에 대한 모든 권한을 부여할 수 있습니다. 이전에 프로젝트를 위해 만들어두었던 acquisition 데이터베이스에 대한 권한을 test_1 유저에게 부여해보았습니다.

마찬가지로 cosmetics 데이터베이스에 대한 권한을 test_2 유저에게 부여해보았습니다. 이와 같은 방식으로 유저에게 권한을 부여할 수 있습니다.


3. REVOKE : 권한 해제

# 유저에게 부여된 권한 조회
SHOW GRANTS FOR 'username'@'localhost';
SHOW GRANTS FOR 'username'@'%';

# 권한 해제
REVOKE ALL ON dbname.* from 'username'@'localhost';
REVOKE ALL ON dbname.* from 'username'@'%';

REVOKE ALL을 통해 위에서 부여했던 권한들을 모두 해제 했습니다. 해제 후 SHOW GRANT 명령어를 사용하면 권한이 제대로 해제가 되었는지 확인해볼 수 있습니다.


4. 정리

SQL 문법 정리

게시글에 작성된 SQL 관련 문법들은 github에 정리해두었습니다. 학습을 진행하며 업데이트를 진행할 예정입니다.

post-custom-banner

0개의 댓글