GRANT
명령으로 권한을 부여할 때 특정 객체를 명시하지 않음GRANT
명령으로 권한을 부여할 때 특정 객체를 명시해야 함ALL PRIVILEGES
명령은 글로벌과 객체 권한 모두에 사용될 수 있다.GRANT privilege_list ON db.table TO 'user'@'host';
GRANT
명령어로 권한을 부여한다.privilege_list
에 여러 권한을 구분자(,)로 명시할 수 있다.ON
키워드 뒤에는 권한을 부여할 오브젝트를 명시한다.
TO
키워드 뒤에는 권한을 부여할 사용자를 명시한다.GRANT SUPER ON *.* TO 'user'@'localhost';
ON
절 뒤에 항상 *.*
을 사용해야 한다.
GRANT EVENT ON *.* TO 'user'@'localhost';
GRANT EVENT ON employees.* TO 'user'@'localhost';
*.*
사용 가능employees.department
와 같이 테이블까지 명시해 테이블에 대해 권한을 부여할 수는 없다.
employees.*
와 같이 명시해야 한다.GRANT SELECT,INSERT,UPDATE,DELETE ON *.* TO 'user'@'localhost';
GRANT SELECT,INSERT,UPDATE,DELETE ON employees.* TO 'user'@'localhost';
GRANT SELECT,INSERT,UPDATE,DELETE ON employees.department TO 'user'@'localhost';
*.*
)employees.*
)employees.department
)특정 칼럼에 대해 권한을 부여하는 경우 문법이 조금 달라진다.
GRANT SELECT,INSERT,UPDATE(dept_name) ON employees.department TO 'user'@'localhost';ON employees.department TO 'user'@'localhost';
SELECT
, INSERT
는 모든 칼럼에서 수행할 수 있지만 UPDATE
는 dept_name
칼럼에 대해서만 수행할 수 있게 설저한 것이다.SHOW GRANTS
명령 사용mysql.user
mysql.db
mysql.tables_priv
mysql.columns_priv
mysql.proc_priv
mysql.global_grants