我们注意到Duplicator上有一个错误,Duplicater会检查正确的权限。
在检查代码时,我们注意到它本质上会执行SHOW GRANTS,以查看是否应用了特定的特权,或者是否找到了所有特权。然而,在我们客户的用例中,它给出了一个警告。
在进行了更多的检查后,我们注意到SHOW GRANTS的输出被错误地解析,数据库名称中的下划线应该被转义。
我们可以通过应用以下方法解决此问题:
$dbName=addcslashes($dbName,'_%');
我们已经将其应用于classes/validation/class.validation.database.service.php
在变更之前,我们的测试得出了以下结果:
START TEST“特权:用户表访问”[CLASS:DUPX_Validation_TEST_db_User_perms]未找到当前数据库的授权行未找到当前数据库的授权行日志时间[DELTA:0.01468]消息:测试“权限:用户表访问”结果:硬警告
变更后,我们的测试结果如下:
START TEST“特权:用户表访问”[CLASS:DUPX_Validation_TEST_db_User_perms]日志时间[DELTA:0.01612]消息:测试“权限:用户表访问”结果:通过
我希望这能有所帮助。