MySQL은 사용자 정의 저장 프로 시저에보기 권한을 부여 할 수 있습니다

다른 RDBMS에서는 예를 들어 사용자에게 권한을 정의 저장 프로 시저 (절차)를 볼 수 있습니다, SQL 서버, 당신은 사용자 A 부여 ProcedureName 별도로 정의 된 권한을 볼 수 있습니다

ProcedureName TO 사용자 A ON GRANT VIEW 정의 - 특정 이름과 계좌 번호 저장 프로 시저로 대체

MySQL은 그래서이 기능을 달성 할 수 있습니까? 이 점에서 기능이 표시되지 않는, 많은 정보를 찾아 온라인으로하는 방법이있다, 공식적인 문서는 기관에 관련이없는이 :이 기능은 사용자에게 권한을 부여하여 간접적으로 달성 될 수있다는 점도 역시 알아두기 바란다을 조회

'usrname@'xxx.xxx.xxx.xxx에두기 바란다을 선택 부여;

개별 간단한 테스트는,이 인증 후 다른 문제가 발견했다.

MySQL의> 프로 시저 prc_insert을 만들 보여; . -没有授权前报这个错误
ERROR 1305 (42000) : 절차의 prc_insert가 존재하지 않습니다
> MySQL의 프로 시저를 만들 보여 prc_insert \ G; -授权后
*************************** 1. 행 **************** ***********
          절차 : prc_insert의
            sql_mode : STRICT_TRANS_TABLES가 NO_ENGINE_SUBSTITUTION이
    과정을 작성 DEFINER을 만들 = @ root````localhost` 절차 prc_insert` (INT에서 CNT)
시작
선언 I의 INT;
I = 1 세트;
난 <할 CNT 동안
    시험 (ID, 이름) 나, CONCAT 선택 삽입 이중 행 ( '이름'I);
   
    난 + = 1 세트;
 
반면 최종;
종료
해서 character_set_client을 : UTF8
이 collation_connection을 : utf8_general_ci를
  데이터베이스 데이터 정렬 : latin1_swedish_ci
설정 (0.00 초)에 1 행
 
오류 :
지정된 없음 쿼리

질문 1 : 이러한 승인 후, 당신은 (하지 저장 프로 시저의 한, 또는 사용자 정의 데이터베이스에 저장 프로 시저)를 모든 정의 데이터베이스 저장 프로 시저를 볼 수 있습니다, 여기가 문제를 확대 할 수있는 권한을 포함한다. 예를 들어, 내가 저장 프로 시저 PRC_A의 정의에보기 사용자에만 권한을 부여하려고했지만, 권한 부여 후, 저장 프로 시저의 정의을 많이 볼, 심지어는 저장 프로 시저의 데이터베이스에 대한 액세스 권한이없는 일부 권한을 볼 수 있습니다. 엄밀히 말하면,이 권한은 무리이지만, 문제가 있습니다.

질문 2 : MySQL을 8.0 당신이 쇼 프로 시저 또는 SHOW가 FUNCION를 만들기 사용하는 경우, 전원을 무엇을 필요로, MySQL은 8.0 점도 역시 알아두기 바란다을 포기하고 시작하기 시작했다? .

MySQL의 mysql.routines 및 mysql.parameters 시스템 테이블에서 8.0 초 만,이 테이블은 직접 저장 프로 시저 메모리는 INFORMATION_SCHEMA.ROUTINES를 액세스 할 수 있습니다 액세스 할 수 있습니다. MySQL은 8.0 전에 인증처럼 작동하지 않습니다

어디에서 저장 프로 시저 저장됩니까?

저장 프로 시저 데이터 사전의 일부인 mysql.routines 및 mysql.parameters 테이블에 저장된다. 직접이 테이블을 액세스 할 수 없습니다. 대신, 쿼리 INFORMATION_SCHEMA 루틴 및 매개 변수 테이블. 절을 참조 25.29,는 "INFORMATION_SCHEMA ROUTINES 표"및 제 25.19,는 "INFORMATION_SCHEMA 매개 변수 표".

당신은 또한 저장 기능에 대한 정보를 얻기 위해 기능을 CREATE SHOW를 사용할 수 있으며, SHOW는 저장 프로 시저에 대한 정보를 얻을 절차를 만듭니다. 절을 참조 13.7.7.9은, "SHOW는 CREATE PROCEDURE 문".

개별 테스트 (이 또한 문제가) (가) ALTER 루틴을 부여 후, 저장 프로 시저의 정의를 볼 수 있다는 것을 발견뿐만 아니라, 사용자가 저장 프로 시저 정의를보기 전용 권한을 부여 할 수 있습니다, 문제가이 권한을 제기, 당신은 저장 프로 시저를 삭제할 수 있습니다. 이것은 물론, 그것을 달성하기 위해 다른 권한이 있는지 불분명하다.

MySQL의> '절차 MyDB.prc_2 TO의 test@'192.168%에 대한 ALTER 루틴을 부여;
쿼리 확인, 0 행이 영향 (0.08 초)
MySQL은>

요약 :

또는 MySQL5.7 버전 이전 기관, 당신은, 간접적으로 달성 ALTER 루틴으로 권한을 부여하여 권한이 저장 프로 시저의 정의를 볼 수 있습니다 MySQL은 8.0 사용자 정의 쿼리 점도 역시 알아두기 바란다을 부여하여 모두 저장 프로 시저를 간접적으로 볼 수 있습니다 권한을 확대하는 문제가있다, 이것은 MySQL의 기능 결함에 속하는 짧은 시간 추정되고있다!

추천

출처www.linuxidc.com/Linux/2019-11/161380.htm