2012-08-02 4 views
4

mysql 워크 벤치 백업을 가져 오기 위해 mysql의 전체 스키마에 대해 사용자에게 TRIGGER 권한을 부여해야합니다. 스키마에 대한 트리거 부여가 작동하지 않음

나는 시도했다 :

grant trigger ON `schemaname`.* TO `user`@`localhost` 

그러나 가져 오는 동안 사용자가 권한을하지 않은 오류가 제공됩니다.

ERROR 1142 (42000) at line 53: TRIGGER command denied to user 'user'@'localhost' for table 'table' 

나는 테이블에 사용자 TRIGGER 권한을 주려고 노력 - 작동하지만, 해당 테이블에 대한 물론, 다른 사람을 위해 여전히 오류가왔다.

사용자에게 모든 테이블에 대한 권한을 별도로 부여하지 않고 스키마에 대한 사용 권한을 부여 할 수있는 방법이 있습니까?

+0

이 문제가 해결 될 때 트리거를 삽입 할 수 있었다 세션을 재개? – Shubhansh

답변

3

In MySQL 5.0 CREATE TRIGGER requires the SUPER privilege. 

MySQL Docs에서 그래서 당신은 사용자에 SUPER 권한을 부여해야합니다. 가져 오는 동안 "Create Trigger ..."와 같은 명령이 발생하여 오류가 발생합니다.

가져 오기 파일에서 트리거에 대한 MySQL 버전 및 정의 값을 확인하십시오.

편집 : 버전 5.1의 , MySQL docs를 수행 말한다 :

CREATE TRIGGER requires the TRIGGER privilege for the table associated with the 
trigger. The statement might also require the SUPER privilege, depending on 
the DEFINER value, as described later in this section. If binary logging is 
enabled, CREATE TRIGGER might require the SUPER privilege, as described in 
Section 19.7, “Binary Logging of Stored Programs”. (Before MySQL 5.1.6, there is 
no TRIGGER privilege and this statement requires the SUPER privilege in all cases) 

The DEFINER clause determines the security context to be used when checking access 
privileges at trigger activation time. 

그래서, 당신은 방아쇠를 가져 오기위한 디파 값을 확인해야합니다. 그것은 다음과 같을 것입니다 : DEFINER = root. 정의자를 제거한 다음 가져 오기를 시도하십시오.

+0

그러나 단일 테이블의 권한을 부여하면 만들기 트리거가 작동합니다. 사용자에게 전체 데이터베이스 스키마에 대한 트리거를 만들 수있는 권한을 부여하는 다른 방법은 없습니까? 나는 SUPER 특권이 그것을 위해 압도적이라고 생각하는 것을 주는가? 다음 문제는 모든 단일 테이블에 트리거 권한을 먼저 부여하면 '테이블이 존재하지 않습니다.'오류가 발생합니다. 스키마 만 내보내고 가져 오는 유일한 방법입니다. 권한을 부여하고 전체 백업 가져 오기를 실행 하시겠습니까? – take

+0

Pls가 당신의 MySQL 버전을 알려주시겠습니까? – Shubhansh

+0

mysql 버전 5.1.61을 사용하고 있습니다. – take

0

MySQL의 문서에서 ... 그것이 작동하는 희망 :

To relax the preceding conditions on function creation (that you must have the 
SUPER privilege and that a function must be declared deterministic or to not 
modify data), set the global log_bin_trust_function_creators system variable 
to 1. By default, this variable has a value of 0, but you can change it like 
this: 

mysql> SET GLOBAL log_bin_trust_function_creators = 1; 
You can also set this variable by using the 
--log-bin-trust-function-creators=1 
option when starting the server. 

전역 변수를 설정하고 내가