>데이터 베이스 >MySQL 튜토리얼 >mysql에서 정의자를 수정하는 방법

mysql에서 정의자를 수정하는 방법

WBOY
WBOY원래의
2022-05-19 17:30:462995검색

수정 방법: 1. "update mysql.proc set Definer=..."를 사용하여 함수 정의자를 수정합니다. 2. "update mysql.EVENT set Definer=..."를 사용하여 이벤트 정의자를 수정합니다. .

mysql에서 정의자를 수정하는 방법

이 튜토리얼의 운영 환경: windows10 시스템, mysql8.0.22 버전, Dell G3 컴퓨터.

mysql의 정의자를 수정하는 방법

1. 함수 및 프로시저의 정의자를 수정합니다.

select definer from mysql.proc;  -- 函数、存储过程
update mysql.proc set definer=‘user@localhost‘; -- 如果有限定库或其它可以加上where条件

2. 이벤트의 정의자를 수정합니다.

select DEFINER from mysql.EVENT; -- 定时事件
update mysql.EVENT set definer=‘ user@localhost ‘;

3. 함수를 수정하면 몇 가지 문제가 발생합니다.

select DEFINER from information_schema.VIEWS;
select concat("alter DEFINER=`user`@`localhost` SQL SECURITY DEFINER VIEW ",TABLE_SCHEMA,".",TABLE_NAME," as ",VIEW_DEFINITION,";") from information_schema.VIEWS where DEFINER<>‘user@localhost‘;

쿼리된 문을 다시 실행하면 됩니다.

4. 트리거 정의자 수정

현재 구체적이고 편리한 방법은 없습니다. HeidiSQL, sqlyog 등의 도구를 사용하여 하나씩 수정할 수 있습니다. 변경 프로세스 중에 다른 테이블의 변경으로 인해 테이블이 트리거되면 데이터 불일치가 발생할 수 있으므로 변경하기 전에 테이블을 잠글 필요가 있습니다.

추천 학습:

mysql 비디오 튜토리얼

위 내용은 mysql에서 정의자를 수정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.