mariadb procedure 소스 보는 권한 해결
mariadb procedure 소스 보는 권한 해결
안녕하세요.
얼마전 사내 개발자분이 생성 되어 있는 procedure의 내부 소스를 보고 싶다는 요청을 하셨습니다.
그래서 실행이 되면 당연히 보실수 있을꺼라 생각하여 execute 권한이 있는 것을 확인하고 되실꺼라 했는데, 어랏?
보이지 않는다고 하시네요.
현재 권한 확인
그래서 지금 부여된 권한은 확인 해보았습니다.
저희는 dev라는 role을 생성해서 개발자분들의 권한을 관리하고 있기 때문에 해당 role에 부여된 권한을 확인 했습니다.
show grants for dev;
결과, usage와 더불어 업무상 필요한 schema들에 적당하게 select, insert, update, delete, execute가 들어가 있는것을 확인 했습니다.
그래서, 그럼 procedure와 같은 SP들의 소스를 보는 권한이 뭐가 있는지 찾아보았는데, alter routine, create routine 등만 보였습니다. 그래서 일단 alter routine은 아닌것 같아서 create routine 권한을 부여했는데도 여전히 소스는 보이지 않았습니다.
원인 파악 및 해결
그러다 문득, SHOW CREATE PROCEDURE <name> 이라는 procedure 소스를 보는 명령이 생각났고, 그렇다면 mysql.proc 오브젝트에 권한을 주면 되지 않을까 하는 생각이 들었죠.
GRANT SELECT ON mysql.proc TO dev;
이렇게 권한을 주고 당근 flush privileges; 로 적용을 시켜 줍니다.
그리고 procedure 소스를 확인을 해보니 잘 보입니다.
결론은 간단한거지만 여태 이런 권한을 요구했던 개발자 분들이 없었는데, 덕분에 알게되었습니다.
여러분들도 유용하게 사용 하시길 바랍니다.
감사합니다.
by.sTricky
2021.10.27 - [Database/mariaDB administrator] - mysql 실무에 유용한 sql 로직 모음 #01
2021.09.09 - [Database/프로그래머스SQL] - 프로그래머스 SQL 코딩 테스트 select 문제 풀이
2021.10.21 - [python 기초강의] - python으로 excel 데이터 탭 별로 mysql DB로 이관 하기 (data migration)
2021.07.02 - [Database/mariaDB administrator] - mariadb partition table의 종류와 선택 기준 주의할 점