: MySQL 5.7 버전까지 권한은 글로벌 권한과 객체 단위의 권한으로 구분
: 데이터베이스나 테이블 이외의 객체에 적용되는 권한을 글로벌, 데이터베이스나 테이블을 제어하는데 필요한 권한을 객체 권한
: MySQL 8.0부터 동적 권한이 추가 (글로벌, 객체 권한은 정적 권한), 동적 권한이란 서버가 시작되면서 동적으로 생성하는 권한
: 사용자한테 권한을 부여할 때는 GRANT 명령을 사용
GRANT privilege_list ON db.table TO 'user'@'host';
글로벌 권한
GRANT SUPER ON *.* TO 'user'@'localhost';
DB 권한
GRANT EVENT ON *.* TO 'user'@'localhost';
GRANT EVENT ON employees.* TO 'user'@'localhost';
테이블 권한
GRANT SELECT,INSERT,UPDATE ON *.* TO 'user'@'localhost';
GRANT SELECT,INSERT,UPDATE ON employees.* TO 'user'@'localhost';
GRANT SELECT,INSERT,UPDATE ON employees.department TO 'user'@'localhost';
SQL
복사
: 글로벌 권한은 특정 DB나 테이블에 부여될 수 없으므로 항상 *.*을 사용, 모든 오브젝트를 포함하여 서버 전체를 의미
: DB 권한은 특정 DB에서만 권한을 부여하거나 서버에 존재하는 모든 DB에 권한을 부여할 수 있으므로 다양한 절을 사용할 수 있음, 스토어드 프로그램들도 포함
: 테이블 권한은 서버의 모든 DB에도, 특정 테이블에도, 특정 컬럼에 거는 것도 가능
•
권한 테이블
구분 | 저장소 테이블 | 설명 |
정적 권한 | mysql.user | 계정 정보 & 계정이나 역할에 부여된 글로벌 권한 |
mysql.user | 계정이나 역할에 DB 단위로 부여된 권한 | |
mysql.user | 계정이나 역할에 테이블 단위로 부여된 권한 | |
mysql.user | 계정이나 역할에 칼럼 단위로 부여된 권한 | |
mysql.user | 계정이나 역할에 스토어드 프로그램 단위로 부여된 권한 | |
동적 권한 | mysql.user | 계정이나 역할에 동적 글로벌 권한 |
: 권한 테이블을 확인하면 가독성 좋게 현재 부여된 권한 현황을 확인할 수 있음