导入mysqldump时超级用户错误?

时间:2014-01-08 09:41:04

标签: drupal mysqldump civicrm

我已经从我们的Drupal6 / CiviCRM4 Civi数据库中完成了一个mysqldump,并尝试将其导入到Drupal7 / Civi4开发安装中,但仍然在第369行获取“ERROR 1227(42000):拒绝访问;您需要SUPER此操作的特权“

据我所知,用户拥有通过网站的cpanel指示的正确权限,所有在导入命令中都显示正确。在对其他安装执行类似的操作之前,我没有遇到此错误。请帮忙吗?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

这可能是其中的一件事。

首先,如果您在5.1.6之前拥有MySQL版本,则无论如何都需要SUPER权限: http://wiki.civicrm.org/confluence/display/CRMDOC/CiviCRM+MySQL+Permission+Requirements

但是,由于它一直运行正常并且您只是尝试导入转储文件,我认为您的转储文件可能具有将定义器设置为旧站点的数据库用户的功能(让我们说“ FOO @ localhost“的)。如果没有SUPER权限,则不允许将定义者设置为除您之外的其他人。如果新站点有不同的用户(可能是“bar @ localhost”),那么您将扮演“bar @ localost”,尝试设置由“foo @ localhost”定义的函数。

在您的转储中,您可能会看到

的内容
CREATE DEFINER=`foo`@`localhost` FUNCTION ...

你可以做以下两件事之一:

  • 让两个数据库使用相同的数据库用户帐户,或
  • 编辑转储文件,将旧用户名替换为新用户名。

您还应该知道“foo @ localhost”和“foo @%”是单独的用户,即使他们具有相同的名称和密码。