# 사용자 권한
사용자에 따라서 데이터베이스 그리고 테이블에 접근할 수 있는 권한 혹은 사용할 수 있는 기능을 제한하도록 하는 기능이 사용자 권한이다. 이 때 사용하는 명령어는 다음과 같다.
GRANT 권한 ON 데이터베이스, 테이블 TO `아이디@호스트` IDENTIFIED BY '비밀번호'
상기 코드에 있어서 권한이란, 데이터베이스를 편집하고 생성하고 삭제하는 등의 행위에 대한 권한 등을 의미한다. 그러한 권한 혹은 기능을 어떠한 데이터 베이스에 실행할 것인가를 지정할 수 있도록 설계되어있다.
그리고 그렇게 설계된 기능을 사용할 수 있는 아이디와 비밀번호를 TO 뒤에 입력하여 저장하도록 구성된 코드이다.
# 사용자 제한
상기 코드블럭의 TO 이하는 데이터 베이스 서버에 접속하는 사용자를 제한하는 용도이다.
아이이@호스트 중에서 호스트는 접속자가 사용하는 머신의 IP를 의미한다. IP를 톡정하지 않으려면 '%'를 사용하면 된다 코드는 하기와 같다.
~ TO `아이디`@`호스트` IDENTIFIED BY '비밀번호'
아이피@호스트는 이중잠금과 유사한 개념이다. 만일 해당 데이터베이스에 접근할 때 아이디만 가지고 이용자를 판별하고자 할때는 상기와 같이 뒤에 %를 넣어도 무방하지만, 조금 더 강력하게 보안을 설정하고자 한다면, 해당 유저가 해당 아이피로 접속하였을때 접근권한을 부여하도록 설정하면된다.
그러한 기능을 사용하기 위해서 해당되는 아이디@접근허용하고자 하는 아이피 순으로 입력한다면, 아무리 같은 아이디더라도 아이피가 다른 경우 접속이 불가능하도록 설정하는 기능을 갖고있다.
# 대상의 제한
사용자 제한을 통과하여 데이터에 접근하려는 대상이, 접근 가능한 데이터의 범위를 설정하는 기능이다. 가령 A라는 사용자에게는 a테이블의 example 테이블에만 접근 허용하고 싶다면, on의 뒤에 해당되는 데이터베이스의 내용을 입력하면 된다. 명령어는 하기와 같다.
~
ON a.example
TO A@%
IDENTIFIED BY 'example123'
만일 모든 해당 사용자에게 모든 데이터베이스에 같은 권한을 부여하고 싶다면 하기와 같이 입력하면 된다.
~
ON *.*
TO A@%
IDENTIFIED BY 'example123'
# 권한
GRANT의 뒷부분에는 해당되는 사용자에게 설정한 범위 안에서 어떠한 기능(권한)을 부여할지 명기하는 부분이다.
데이터베이스를 어떻게 사용할 수 있는지 그 사용의 권한의 범위를 제한하는 것인데, 기입 가능한 권한의 예제는 하기와 같다.
개발자 | DELETE, INSERT, SELECT, UPDATE |
설계자 | ALTER, CREATE, DELETE, DROP, INDEX, INSERT, SELECT, UPDATE, DELETE, SELECT, UPDATE |
DBA | ALL |
상기 내용의 명령어의 예시는 하기와 같다.
GRANT DELETE,INSERT,SELECT,UPDATE
ON class.*
TO `dev`@`%`
IDENTIFIED BY '1234';
# SHOW GRANTS
데이터베이스를 이용하는 사용자에게 권한을 부여하였으면, 각각의 사용자에 대하여 어떠한 권한이 부여되었는가를 확인할 수 있어야 한다. 그것을 사용하기 위한 명령어가 SHOW GRANTS이다. 문법은 하기와 같다.
SHOW GRANTS [FOR 사용자]
// 예제
SHOW GRANTS FOR dev;
만일, dev라는 사용자가 존재한다면, 상기 코드와 같이 SHOW GRANTS FOR dev; 라고 입력한다면, dev라는 사용자에게 부여된 권한들이 어떠한 것이 있는지 확인이 가능하다. 만일 for뒤에 특정 사용자의 아이디를 입력하지 않으면 접속한 아이디 혹은 접속한 아이피 본인의 권한이 어떠한지에 대하여 열람할 수 있게 된다.
#REVOKE
사용자에게 권한을 부여하고 열람할 수 있으면 삭제를 할 수 있어야 한다. revoke는 사용자의 권한을 삭제하는 기능을 갖고 있다. 삭제를 할 시, 특정 데이터베이스의 범위를 지정하여 해당되는 데이터베이스에서만 그 기능을 사용하지 못하게 하는 등의 조치를 취할 수 도 있다. 명령어는 하기와 같다.
REVOKE 권한
ON 데이터베이스.테이블
FROM 사용자
on의 뒤에 오는 데이터베이스.테이블에 대한 권한을 revoke 하면, 사용자는 해당 데이터베이스의 테이블에서는 revoke된 권한은 더이상 가질 수 없게 되는 것이다.
# DROP USER
마지막으로는 생성된 유저 계정을 삭제하는 기능이다. 데이터베이스를 이용하려고 등록한 사용자를 삭제하는 기능이다 문법은 하기와 같다.
DROP USER user [, user] ...
예제는 하기와 같다.
DROP USER `dev`@`%`;
'Language > mySQL' 카테고리의 다른 글
MySQL 오류정리 :: 1. Error Code: 1034 Index for table 'global_priv' is corrupt; try to repair itError Code: 1034 Index for table 'global_priv' is corrupt; try to repair it (0) | 2021.08.13 |
---|---|
공부 내용 정리 mySQL :: 트랜잭션(Transaction) (0) | 2021.07.31 |
공부 내용 정리 mySQL :: 초급 I (0) | 2021.05.22 |
공부 내용 정리 mySQL :: 예제 정리 4 (0) | 2021.05.20 |
공부 내용 정리 mySQL :: 기초 VI (0) | 2021.05.19 |