2014-01-08 2 views
2

Drupal6/CiviCRM4 Civi DB에서 mysqldump를 수행했고 Drupal7/Civi4 dev 설치로 가져 오기를 시도했지만 "ERROR 1227 (42000) in line 369 : Access denied, SUPER privilege 이 작업에 대해 "mysqldump를 가져올 때 슈퍼 유저 에러가 발생합니까?

내가 알 수있는 것부터, 사용자는 사이트의 cpanel을 통해 표시된대로 올바른 권한을 가지고 있습니다. 모두 가져 오기 명령에 올바르게 표시됩니다. 다른 설치에서 비슷한 절차를 수행하기 전에이 오류가 발생하지 않았습니다. 도와주세요?

답변

0

두 가지 중 하나 일 수 있습니다. 당신이 5.1.6 이전 MySQL 버전이있는 경우

첫째, 당신은 상관없이 SUPER 권한이 필요하지 않은 것들 : http://wiki.civicrm.org/confluence/display/CRMDOC/CiviCRM+MySQL+Permission+Requirements

그러나, 그것은 벌금을 실행 되었기 때문에 당신은 단지를 가져 오기 위해 노력하고 덤프 파일, 나는 아마도 당신의 덤프 파일이 definer가 이전 사이트의 데이터베이스 사용자로 설정된 함수를 가지고 있다고 생각한다. ("foo @ localhost"라고하자). SUPER 특권이 없으면 정의자가 사용자가 아닌 다른 사람으로 설정 될 수 없습니다. 새 사이트에 다른 사용자 (아마 "bar @ localhost")가 있으면 "bar @ localost"로 "foo @ localhost"로 정의 된 함수를 설정하려고합니다. 덤프에서

, 당신은 아마 당신이 할 수있는

CREATE DEFINER=`foo`@`localhost` FUNCTION ... 

의 라인을 따라 뭔가를 볼 수 있습니다 두 가지 중 하나를

  • 두 데이터베이스가 동일한 데이터베이스 사용자 계정을 사용하거나
  • 덤프 파일을 편집하여 이전 사용자 이름을 새 사용자 이름으로 바꾸십시오.

"foo @ localhost"와 "foo @ %"는 동일한 이름과 암호가 있어도 별도의 사용자라는 점도 알아 두어야합니다.

1

Drupal/CiviCrm 데이터베이스는 트리거를 사용합니다. 데이터베이스를 가져올 때 트리거를 다시 작성하려면 SUPER 특권이 필요합니다. 표준 사용자의 권한을 Civi를 실행하는 데 필요한 권한으로 제한했다면 가져 오기 전용으로 새 MySQL 사용자를 만들고 해당 사용자에게 데이터베이스에 대한 모든 권한을 부여 할 수 있습니다. 가져 오기가 완료되면 높은 권한으로 사용자를 제거하십시오.

관련 문제