Search
Duplicate
4️⃣

권한(Privilege)

: 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
계정이나 역할에 동적 글로벌 권한
: 권한 테이블을 확인하면 가독성 좋게 현재 부여된 권한 현황을 확인할 수 있음