mysql 특정 테이블에 권한 추가 에러 해결 / ERROR 1144 (42000): Illegal GRANT/REVOKE command
RDB/mysql 2022. 10. 14. 17:55반응형
mysql 유저 계정에 특정 테이블에 권한 추가를 하려고 기존권한을 복붙 하려는데
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, EXECUTE ON xxxxDB.TB_TEMP_BACKUP TO 'testapp'@'%';
ERROR 1144 (42000): Illegal GRANT/REVOKE command; please consult the manual to see which privileges can be used
에러가 나서 좀 확인해보니 나머지는 상관없는데 EXECUTE 권한이 전역권한이라 특정테이블에서만 실행할 수는 없다고 한다.
EXECUTE 권한에 대해 알아본다.
EXECUTE : 저장 루틴(저장 프로시저 및 함수)을 실행하는 명령문을 사용할 수 있습니다.
참조 : https://dev.mysql.com/doc/refman/5.7/en/privileges-provided.html
함수나 프로시저를 실행하는 명령어였다.
(그럼 특정테이블에 EXECUTE 권한 넣는 것은 당연히 안되는 것)
그렇다면 특정함수만 권한넣을 수 있는지와 전역권한이라니까
2가지를 한번 테스트 해본다.
테스트시작)
1. 특정테이블에 권한 추가
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, EXECUTE ON xxxxDB.TB_TEMP_BACKUP TO 'testapp'@'%';
ERROR 1144 (42000): Illegal GRANT/REVOKE command; please consult the manual to see which privileges can be used
/* EXECUTE 때문에 안됨
xxxxDB.TB_TEMP_BACKUP (DB스키마명.테이블명)
*/
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON xxxxDB.TB_TEMP_BACKUP to 'testapp'@'%';
Query OK, 0 rows affected (0.04 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.04 sec)
/* EXECUTE 빼고는 특정테이블에 권한할당이 가능한 것을 확인함 */
2. EXECUTE 권한 테스트
2-1) 특정 함수에 권한 추가
mysql> GRANT EXECUTE ON xxxxDB.fn_xxxxxxxx to 'testapp'@'%';
ERROR 1144 (42000): Illegal GRANT/REVOKE command; please consult the manual to see which privileges can be used
/* 함수인데 왜 할당이 안되는것일까? */
mysql> GRANT EXECUTE ON FUNCTION xxxxDB.fn_xxxxxxxx to 'testapp'@'%';
Query OK, 0 rows affected (0.03 sec)
/* 실행대상이 ON FUNCTION 임을 명시해줘야 함 */
mysql> flush privileges;
Query OK, 0 rows affected (0.03 sec)
2-2) 전역권한 추가
mysql> GRANT EXECUTE ON xxxxDB.* to 'testapp'@'%';
Query OK, 0 rows affected (0.04 sec)
/* 전역권한이라 DB스키마명만 명시하고 나머지를 *로 주면 권한추가가 가능하다는 것을 확인함 */
mysql> flush privileges;
Query OK, 0 rows affected (0.04 sec)
3. 권한 삭제 (추가했으면 삭제도 해봐야지)
mysql> REVOKE SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON xxxxDB.TB_TEMP_BACKUP from 'testapp'@'%';
Query OK, 0 rows affected (0.03 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.03 sec)
REVOKE로 권한삭제가 가능한데 GRANT 명령어와 차이는 TO 와 FROM
끝.
반응형
'RDB > mysql' 카테고리의 다른 글
mysql stored procedure 내에서 NAME_CONST() 함수 사용으로 성능저하 문제 (0) | 2023.02.02 |
---|---|
mysqldump 사용시 주의점 (0) | 2023.01.10 |
mysql int(10) / int(11) / int(20) / bigint(20) 괄호 안에 숫자 의미는 ? (0) | 2022.08.16 |
.TRG 파일 이건 뭐야 (0) | 2021.03.23 |
mysql 디스크 용량이 거의 다 찼어요 (0) | 2021.03.06 |