2014-10-07 6 views
0

mysql의 테이블 행을 업데이트하는 데 문제가 있습니다. 내가 update table table_name set y="value" where z like "%something"을 실행하면로그인하지 않은 다른 사용자에 대해 트리거가 거부되었습니다.

응답은 : 내가 보호 매트로 로그인하고있어 것을

ERROR 1142 (42000): TRIGGER command denied to user 'coworker'@'localhost' for table 'table_name'

문제는 @ localhost를. 루트로 로그인 할 때 동일한 오류 메시지가 표시되고 동일한 작업을 수행하려고합니다.

아무도 내가 이것을 해결할 방법을 알고 있습니까?

+1

트리거를 삭제할 수 있습니다. 루트가 그것을 실행할 수 없다는 것이 이상하게 들립니다. –

답변

1

트리거가 사용자 동료와 함께 만들어졌습니다.

DEFINER 정의 (동료 포함)가있는 덤프를 가져온 것 같습니다. 덤프에서 # DEFINER 정의를 제거하고 다시 가져올 것입니다. 이 경우 덤프는 정의자를 다시 작성하지만 가져 오기를 실행하는 사용자와 함 2 재 작성합니다. 이 후에 거부 된 정보는 더 이상 발생하지 않아야합니다.

+0

감사합니다. 나는 지금 이것을 시도 할 것이다. – madshvero

+1

이것은 효과가있다. 고마워요! 필자는 [here] (http://dbperf.wordpress.com/2010/04/12/removing-definer-from-mysql-dump/)의 perl 스크립트를 사용하여 정의자를 제거했습니다. – madshvero

관련 문제