이번 포스트는 MySQL을 사용하여 데이터베이스의 DCL을 정리해보려고 한다.
DCL이란 데이터베이스를 제어하는 명령어로 사용자 정보를 추가, 수정, 삭제 등을 하거나 권한을 설정할 때 사용한다.
사용자 정보 변경
기본 문법
1. 유저 생성
mysql> CREATE USER 'userid'@localhost IDENTITFIED BY '비밀번호';
mysql> CREATE USER 'userid'@'%' IDENTITFIED BY '비밀번호';
2. 유저 비밀번호 변경
mysql> SET PASSWORD FOR 'userid'@'%' = '비밀번호';
3. 유저 삭제
mysql> DROP USER 'userid'@'%';
로컬에서만 접속할 수 있는 "localman"이라는 유저를 생성했다.
비밀번호도 변경할 수 있지만, 여기에 변경된 결과를 올릴 방법이 없다..
유저를 삭제하고 테이블에서 "localman"이 삭제된 것을 확인할 수 있다.
권한 설정
기본 문법
1. 로컬에서만 특정 데이터베이스의 테이블 접속 허용
mysql> GRANT ALL ON 데이터베이스 이름.TABLE to 'USER_ID'@localhost;
2. 특정 호스트에서만 특정 데이터베이스의 테이블 접속 허용
mysql> GRANT ALL ON 데이터베이스 이름.TABLE to 'USER_ID'@localhost;
3. 모든 호스트에서 특정 데이터베이스의 테이블 접속 허용
mysql> GRANT ALL ON 데이터베이스 이름.TABLE to 'USER_ID'@localhost;
4. 모든 권한이 아닌 일부 권한만 허용
mysql> GRANT SELECT ON 데이터베이스 이름.TABLE to 'USER_ID'@localhost;
* SELECT대신에 다른 CRUD권한을 입력 가능하다.
* CREATE문으로 유저 정보를 이미 만들어 두어야 한다.
문법대로만 한다면 DCL이 잘 적용되는 것을 볼 수 있다.
flush privileges
기본 문법
flush privileges;
user, db 같은 grant table을 INSERT, UPDATE 등을 써서 직접 데이터 입력/수정을 할 경우, grant tables를 다시 읽어야 권한 설정이 적용되기 때문에 이 문법을 사용한다. 하디만 GRANT명령으로 수정 시 해당 명령을 생략해도 무방하다.
'Computer_Language > DataBase_Python' 카테고리의 다른 글
[DB][MySQL] pymysql을 사용하여 파이썬에서 DB 다루기 (0) | 2019.10.21 |
---|---|
[DB][MySQL] 데이터베이스의 DML(Data Manipulation Language) (0) | 2019.10.16 |
[DB][MySQL] 데이터베이스의 DDL(Data Definition Language) (0) | 2019.10.05 |
[DB][MySQL] 데이터베이스를 공부하기 전 기본 개념과 개발 환경 설정 (0) | 2019.10.03 |