반응형
저장 프로시저를 작성할 때 'definer'가 필요합니까?
모든 MySQL 프로시저를 다음과 같이 작성했습니다.root@localhost:
CREATE DEFINER=`root`@`localhost` PROCEDURE `p_add_user`(...)
문제는 다른 서버에 배포할 때 교체해야 한다는 것입니다.root현재 사용자 및 대체 사용자와 함께localhost현재 IP로, 귀찮습니다.
제 데이터베이스와 절차를 사용하려는 사람이 각 절차의 정의를 수정할 필요가 없도록 절차를 작성할 수 있는 방법이 있습니까?
여기 MySQL 설명서에 명시된 바와 같이
CREATE
[DEFINER = { user | CURRENT_USER }]
PROCEDURE sp_name ([proc_parameter[,...]])
[characteristic ...] routine_body
따라서 DEFINER 부분은 필수가 아니며 CREATE PROCEDURE만 작동하면 됩니다.
[EDIT: ref 페이지 업데이트]
프로시저 본문(선언 후)에 다음 문을 추가하여 실행 권한을 지정할 수 있습니다.
SQL SECURITY INVOKER
예:
CREATE DEFINER=`root`@`localhost` PROCEDURE `p_add_user`()
SQL SECURITY INVOKER
(...)
이렇게 하면 실제 호출자 권한이 적용되고DEFINER스키마 가져오기 중에 자동으로 추가되는 경우에도 part가 생략됩니다.여기 전체 참조: https://dev.mysql.com/doc/refman/5.7/en/stored-objects-security.html
CREATE DEFINER=[your_web_user]@% PROCEDURE p_add_user(...)
확인..절차에 따라 사용자를 정의하고 싶다면 아마 이 방법이 도움이 될 것입니다.
언급URL : https://stackoverflow.com/questions/2666286/is-definer-required-when-creating-a-stored-procedure
반응형
'programing' 카테고리의 다른 글
| C에서 곱슬곱슬한 교정기의 이상한 사용 (0) | 2023.11.06 |
|---|---|
| 안드로이드에서 타원 크기란 무엇을 의미합니까? (0) | 2023.11.06 |
| 응답 J를 검색하는 방법jquery $.jax 객체의 SON 속성 (0) | 2023.11.01 |
| INET6_ADDRSTRLEN이 C에서 46으로 정의된 이유는 무엇입니까? (0) | 2023.11.01 |
| C: 다자리 숫자를 별도의 변수로 분할하는 방법은? (0) | 2023.11.01 |