代码之家  ›  专栏  ›  技术社区  ›  user5810533

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

  •  1
  • user5810533  · 技术社区  · 10 年前

    两边都有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”上的drush状态返回:

    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数组或dburl字符串,因为v7, 为什么它试图用“myremotehostuser”@“localhost”而不是“databaseuser”@“localhost”访问数据库?

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

    编辑:

    在同一台服务器上尝试相同的别名文件,主机用户名和数据库用户名仍然不同,但这一次在一个新创建的帐户中,似乎效果很好。所以我想问题是由CPanel/WHM配置问题引起的,而不是任何与Drush相关的问题。在结束问题之前,我会反复尝试几次。

    2 回复  |  直到 10 年前
        1
  •  0
  •   Azsgy    8 年前

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

    [client]
    user=myremotehostuser
    

    一旦我临时删除了这个文件, 德鲁什 可以使用站点的settings.php成功转储sql。

        2
  •  0
  •   user5810533 user5810533    10 年前

    在新帐户中重复rsync和sql-sync过程没有问题。这个问题只发生在这个已经创建的帐户中,有多个数据库、用户和前缀。我没有对此帐户的完全访问权限,因此无法正确测试它。

    这个问题太具体了,可能不值得单独提问,因为它几乎不可能复制。我会认为它“解决了”,并会在我发现它不工作的情况下更新它。