让Laravel artisan和localhost的vagrant玩


Make Laravel artisan play with vagrant from localhost

当我ssh到我的本地流浪机器时,我可以执行所有的工匠命令。然而,在它之外,任何需要访问数据库的命令(如artisan migrate)都会给出Access denied for user 'root'@'localhost'。如果可能的话,我如何使用artisan而不需要登录流浪机?

我也想做,例如Artisian::call('migrate'),例如在测试期间。但是这会产生同样的错误

access denied错误的原因是mysql默认限制对本地机器的数据库访问。可以像这里描述的那样打开远程连接,但是对于生产环境来说这不是一个好主意。

更好的方法是为您想要的命令添加别名,如下所述。

为了在代码中调用artisan等,Laravel有一种在远程服务器上运行命令的内置方式。首先将连接信息添加到app/config/remote.php文件中。对于vagrant,它应该看起来像这样:

'connections' => array(
    'production' => array(
        'host'      => 'localhost',
        'username'  => 'vagrant',
        'password'  => 'vagrant',
        'key'       => '',
        'keyphrase' => '',
        'root'      => '/vagrant',
    ),
),

然后像这样执行artisan migrate:

SSH::run(array('cd /vagrant', 'php artisan migrate'));

你也可以做更高级的事情。这里是文档