两边都有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相关的问题。在结束问题之前,我会反复尝试几次。