Drupal 导入mysqldump时出现超级用户错误?

Drupal 导入mysqldump时出现超级用户错误?,drupal,mysqldump,civicrm,Drupal,Mysqldump,Civicrm,我已经从Drupal6/CiviCRM4 Civi DB中完成了一个mysqldump,并试图将其导入到Drupal7/Civi4 dev安装中,但不断收到“第369行错误1227(42000):拒绝访问;您需要此操作的超级权限” 据我所知,用户拥有通过站点的cpanel指示的正确权限,在import命令中显示的所有权限都是正确的。在其他安装上执行类似过程之前,我从未遇到过此错误。请帮忙?这可能是几件事之一 首先,如果您的MySQL版本在5.1.6之前,那么无论发生什么情况,您都需要超级权限:

我已经从Drupal6/CiviCRM4 Civi DB中完成了一个mysqldump,并试图将其导入到Drupal7/Civi4 dev安装中,但不断收到“第369行错误1227(42000):拒绝访问;您需要此操作的超级权限”


据我所知,用户拥有通过站点的cpanel指示的正确权限,在import命令中显示的所有权限都是正确的。在其他安装上执行类似过程之前,我从未遇到过此错误。请帮忙?

这可能是几件事之一

首先,如果您的MySQL版本在5.1.6之前,那么无论发生什么情况,您都需要超级权限:

但是,由于它一直运行良好,而您只是尝试导入转储文件,我认为可能是您的转储文件具有将定义者设置为旧站点的数据库用户的功能(例如“foo@localhost"). 如果没有超级权限,您不允许将定义者设置为您以外的其他人。如果新站点有不同的用户(可能是“bar@localhost)你在扮演“bar@localost“正在尝试设置由定义的函数”foo@localhost“

在你的垃圾堆里,你可能会看到一些类似

CREATE DEFINER=`foo`@`localhost` FUNCTION ...
您可以执行以下两种操作之一:

  • 让两个数据库使用相同的数据库用户帐户,或
  • 编辑转储文件以在任何地方使用新用户名替换旧用户名

你也应该意识到“foo@localhost“和“foo@%”是独立的用户,即使它们具有相同的名称和密码。

Drupal/CiviCrm数据库使用触发器。导入数据库时,需要超级权限来重新创建触发器。如果您已将标准用户的权限限制为运行Civi时所需的权限,则可以仅为导入创建一个新的MySQL用户,并授予该用户在数据库上的所有权限。导入完成后,删除具有提升权限的用户