drush sql-sync上的访问被拒绝(远程用户和数据库用户不同)

时间:2016-02-09 16:15:17

标签: mysql drupal-7 cpanel drush

双方使用Drush v8.0.3(本地是Mac,desarrollo是带有CPanel的Linux服务器),我正在执行:

sql-sync @project.local @project.desarrollo

并在流程结束时收到此错误(其他一切正常):

ERROR 1045 (28000): Access denied for user 'myremotehostuser'@'localhost' (using password: YES)

我的别名文件包括:

$aliases['desarrollo'] = array (
  'root' => '/home/myremotehostuser/subdomains/project/',
  'uri' => 'http://project.myremotehost.com',
  'remote-user' => 'myremotehostuser',
  'remote-host' => 'myremotehost.com',
  'path-aliases' => array(
    '%dump-dir' => '/tmp',
  ),
  'source-command-specific' => array (
    'sql-sync' => array (
      'no-cache' => TRUE,
      'structure-tables-key' => 'common',
    ),
  ),
  'command-specific' => array (
    'sql-sync' => array (
      'sanitize' => TRUE,
      'no-ordered-dump' => TRUE,
      'structure-tables' => array(
        'common' => array('cache', 'cache_filter', 'cache_menu', 'cache_page', 'history', 'sessions', 'watchdog'),
      ),
    ),
  ),
);

" desarrollo"返回:

Drupal version         :  7.41                                   
Site URI               :  http://project.myremotehost.com       
Database driver        :  mysql                                  
Database hostname      :  localhost                              
Database port          :                                         
Database username      :  databaseuser                         
Database name          :  databasename                      
PHP configuration      :  /usr/local/lib/php.ini                 
PHP OS                 :  Linux                                  
Drush script           :  /usr/local/bin/drush                   
Drush version          :  8.0.3                                  
Drush temp directory   :  /tmp                                   
Drush configuration    :                                         
Drush alias files      :                                         
Drupal root            :  /home/myremotehostuser/subdomains/project/ 
Drupal Settings File   :  sites/default/settings.php             
Site path              :  sites/default  

正如您所看到的,"数据库所有者" (MySQL用户)与"远程主机"不同。 (CPanel用户)。

Drush用于扫描双方的设置文件以找出正确的配置,如果我没有错,你甚至不必添加$ databases数组或db-url字符串从v7开始。然后,为什么要尝试使用' myremotehostuser' @' localhost'来访问数据库。而不是' databaseuser' @' localhost'?

在这种情况下,没有名为“myremotehostuser”的数据库用户'我想我可以通过创建它并授予' databasename'来解决问题。但是我几乎可以肯定我错过了一些非常愚蠢的东西,必须有一个简单的解决方案。

修改

在同一服务器中尝试相同的别名文件,主机用户名和数据库用户名仍然不同,但这次是在新创建的帐户中,似乎完全可行。所以我猜这个问题是由一些CPanel / WHM配置问题造成的,而不是任何与Drush相关的问题。在结束这个问题之前,我会继续尝试这几次。

2 个答案:

答案 0 :(得分:0)

在新帐户中重复rsync和sql-sync进程可以正常工作。此问题仅发生在此已创建的帐户中,具有多个数据库,用户和前缀。我没有完全访问此帐户的权限,因此无法正确测试。

这个问题过于具体,可能本身不值得提问,因为它几乎不可能复制。我会认为它“已经解决”并会在我发现它无法正常工作的情况下更新它。

答案 1 :(得分:0)

我也遇到过这个问题。结果drush首先查找文件~/.my.cnf,如果找到它,它将使用它进行连接。该文件包含用户名和密码。

[client]
user=myremotehostuser

暂时删除此文件后,drush可以使用网站的settings.php成功转储sql。