【发布时间】:2014-01-08 09:41:03
【问题描述】:
我已经从我们的 Drupal6/CiviCRM4 Civi DB 完成了一个 mysqldump,并试图将其导入 Drupal7/Civi4 开发安装,但在第 369 行不断收到“错误 1227 (42000):访问被拒绝;你需要 SUPER此操作的权限”
据我所知,用户具有通过站点的 cpanel 指示的正确权限,在导入命令中所有显示都是正确的。在对其他安装进行类似程序之前,我没有遇到此错误。请帮忙?
【问题讨论】:
我已经从我们的 Drupal6/CiviCRM4 Civi DB 完成了一个 mysqldump,并试图将其导入 Drupal7/Civi4 开发安装,但在第 369 行不断收到“错误 1227 (42000):访问被拒绝;你需要 SUPER此操作的权限”
据我所知,用户具有通过站点的 cpanel 指示的正确权限,在导入命令中所有显示都是正确的。在对其他安装进行类似程序之前,我没有遇到此错误。请帮忙?
【问题讨论】:
这可能是其中之一。
首先,如果您的 MySQL 版本低于 5.1.6,则无论如何都需要 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@%”是不同的用户,即使他们的名称和密码相同。
【讨论】:
Drupal/CiviCrm 数据库使用触发器。导入数据库时需要 SUPER 权限才能重新创建触发器。如果您已将标准用户的权限限制为运行 Civi 时所需的权限,您可以创建一个新的 MySQL 用户仅用于导入并授予该用户对数据库的所有权限。导入完成后,删除具有提升权限的用户。
【讨论】: