programing

Oracle의 다른 사용자에게 저장 프로시저에 대한 권한 부여

testmans 2023. 11. 6. 21:42
반응형

Oracle의 다른 사용자에게 저장 프로시저에 대한 권한 부여

저는 학부생이며, 데이터베이스 Oracle 10g 모드 = xe에서 B 사용자가 소유하고 있는 저장 프로시저에 대해 A 사용자에게 소유권을 부여하는 데 문제가 거의 없습니다.

저장 프로시저 xyz에 대한 소유권을 다른 사용자 A에게 부여하는 sql 명령 작성을 도와주세요.

"소유권"이 무슨 뜻인지 잘 모르겠습니다.

사용자 B가 저장 프로시저를 소유하고 있는 경우, 사용자 B는 사용자 A에게 저장 프로시저를 실행할 수 있는 권한을 부여할 수 있습니다.

GRANT EXECUTE ON b.procedure_name TO a

그러면 사용자 A는 완전한 이름, 즉 절차를 호출합니다.

BEGIN
  b.procedure_name( <<list of parameters>> );
END;

또는 사용자 A는 정규화된 프로시저 이름을 사용할 필요가 없도록 동의어를 만들 수도 있습니다.

CREATE SYNONYM procedure_name FOR b.procedure_name;

BEGIN
  procedure_name( <<list of parameters>> );
END;

당신은 내가 생각하는 일을 할 수 없습니다.

절차에 대해 부여할 수 있는 권한은 EXECUTE와 DEBUG뿐입니다.

사용자 A 스키마에서 사용자 B가 프로시저를 생성할 수 있도록 하려면 사용자 B에게 CREATE any PROCEDURE 권한이 있어야 합니다.사용자 B의 사용자 A 절차를 변경하거나 삭제하는 데 필요한 기타 적용 가능한 권한은 절차 변경 및 삭제입니다.사용자 B를 특정 스키마로 제한하지 않기 때문에 모두 광범위한 권한입니다.사용자 B에게 이러한 권한이 부여된다면 매우 신뢰할 수 있어야 합니다.

편집:

저스틴이 언급한 바와 같이, 을이 소유한 절차에 대한 집행권을 갑에게 부여하는 방법:

GRANT EXECUTE ON b.procedure_name TO a;

Oracle의 패키지 및 저장 프로시저는 현재 로그온한 사용자가 아닌 패키지/프로시저 OWNER 권한을 사용하여 기본적으로 실행됩니다.

따라서 예를 들어 사용자를 생성하는 패키지를 호출하는 경우에는 패키지 소유자이지 사용자 생성 권한이 필요한 호출 사용자가 아닙니다.발신자는 패키지에 대한 권한만 실행하면 됩니다.

호출 사용자의 권한을 사용하여 패키지를 실행하려면 패키지를 생성할 때 AUTHID CURRENT_USER를 지정해야 합니다.

Oracle 문서 "Invoker Rights vs Definer Rights"에는 자세한 정보가 있습니다. http://docs.oracle.com/cd/A97630_01/appdev.920/a96624/08_subs.htm#18575

도움이 되길 바랍니다.

DBA 계정에서 허가를 사용하여 절차를 작성할 수 있는 권한을 사용자B에게 부여합니다.grant create any procedure to USERB

이 절차는 다음과 같이 보일 것입니다.

CREATE OR REPLACE PROCEDURE USERB.USERB_PROCEDURE
--Must add the line below
AUTHID CURRENT_USER AS
  BEGIN
  --DO SOMETHING HERE
  END
END

GRANT EXECUTE ON USERB.USERB_PROCEDURE TO USERA

이것이 아주 오래된 질문이라는 것을 알지만, 저는 제가 그것을 조금 깎아낼 수 있기를 희망합니다.

SQL> grant create any procedure to testdb;

이 명령은 "testdb" 사용자에게 create 권한을 부여하고자 할 때 사용합니다.

언급URL : https://stackoverflow.com/questions/4305323/granting-rights-on-stored-procedure-to-another-user-of-oracle

반응형