권한이란?
사용자에 따라서 접근할 수 있는 데이터와 사용할 수 있는 기능을 제한
GRANT
사용자를 생성하고, 권한을 부여함
문법
GRANT 권한 ON 데이터베이스.테이블 TO '아이디'@'호스트' IDENTIFIED BY '비밀번호'
사용자의 제한
데이터베이스 서버에 접속하는 사용자를 제한한다.
아이디@호스트 중에서 호스트는 접속자가 사용하는 머신의 IP를 의미한다. IP를 특정하지 않으려면 '%'를 사용
- egoing@123.100.100.100 : IP 123.100.100.100인 머신에서 접속한 ID egoing
- egoing@% : IP 관계없이 ID가 egoing인 사용자
대상의 제한
사용자가 제어할 대상이 되는 데이터베이스, 테이블을 지정
*를 사용하면 모든 데이터베이스, 테이블을 제어 대상으로 함
권한(기능)의 제한
사용할 수 있는 권한을 제한 (권한은 아래 표 참조)
권한 템플릿
개발자 | DELETE, INSERT, SELECT, UPDATE |
설계자 | ALTER, CREATE, DELETE, DROP, INDEX, INSERT, SELECT, UPDATE, DELETE, INSERT, SELECT, UPDATE |
DBA | ALL |
예제
ID가 dev, 비밀번호가 1234인 사용자가 class 데이터베이스만 접근하게 하려면 아래와 같이 한다.
GRANT DELETE,INSERT,SELECT,UPDATE ON class.* TO `dev`@`%` IDENTIFIED BY '1234';
ID가 archi, 비밀번호가 1234이고 클라이언트의 IP가 100.100.100.100인 사용자가 모든 데이터베이스에 접근하면서 설계자의 권한 템플릿을 이용할 때
GRANT ALTER, CREATE, DELETE, DROP, INDEX, INSERT, SELECT, UPDATE, DELETE, INSERT, SELECT, UPDATE ON *.* TO `archi`@`100.100.100.100` IDENTIFIED BY '1234';
SHOW GRANTS
자신의 권한이나, 특정 사용자의 권한을 열람
문법
SHOW GRANTS [FOR 사용자]
예제
SHOW GRANTS FOR dev;
REVOKE
사용자의 권한을 제거
문법
REVOKE 권한 ON 데이터베이스.테이블 FROM 사용자
예제
사용자 dev의 데이터베이스 class의 DELETE 권한을 제거
revoke DELETE on class.* from dev;
DROP USER
사용자를 삭제
문법
DROP USER user [, user] ...
예제
DROP USER `dev`@`%`;
권한 테이블
Privilege | 권한이 적용되는 대상(context) | 설명 |
---|---|---|
CREATE |
databases, tables, or indexes | 데이터베이스, 테이블 생성 |
DROP |
databases, tables, or views | 데이터베이스,테이블 삭제 |
GRANT OPTION |
databases, tables, or stored routines | 사용자들의 권한을 부여하거나 제거 |
LOCK TABLES |
databases | 테이블 잠그기 |
ALTER |
tables | 테이블의 구조를 변경 |
DELETE |
tables | 테이블의 행을 삭제 |
INDEX |
tables | 인덱스를 생성하거나 삭제 |
INSERT |
tables or columns | 행 추가 |
SELECT |
tables or columns | 행 조회 |
UPDATE |
tables or columns | 행 변경 |
CREATE TEMPORARY TABLES |
tables | 임시 테이블의 생성 |
CREATE VIEW |
views | 뷰의 생성 |
SHOW VIEW |
views | SHOW CREATE VIEW |
ALTER ROUTINE |
stored routines | 프로시저, 함수의 변경 삭제 |
CREATE ROUTINE |
stored routines | 프로시저, 함수의 생성 |
EXECUTE |
stored routines | 프로시저, 함수의 실행 |
FILE |
file access on server host |
|
CREATE USER |
server administration |
|
PROCESS |
server administration |
타인의 thread 실행 상태를 열람
자신의 thread는 언제든지 열람가능 |
RELOAD |
server administration |
|
REPLICATION CLIENT |
server administration |
|
REPLICATION SLAVE |
server administration | 리플리케이션에 참가하고 있는 슬레이브 서버들이 마스터 서버(권한을 부여하는 서버) 접속해서 마스터의 변경사항을 동기화 |
SHOW DATABASES |
server administration |
|
SHUTDOWN |
server administration |
|
SUPER |
server administration |
다른 클라이언트를 종료하거나, 서버의 동작 변경
|
ALL [PRIVILEGES] |
server administration | 모든 권한 허용 |