当我进入我当地的流浪汉机器时,我可以执行所有工匠命令。除了它之外,任何需要数据库访问的命令(例如工匠迁移)都会提供Access denied for user 'root'@'localhost'
。如果可能,我怎样才能使用工匠而无需登录流浪汉机器?
我还想做例如Artisian::call('migrate')
,例如在测试期间。但这会产生同样的错误。
答案 0 :(得分:1)
access denied
错误的原因是mysql默认情况下限制对本地计算机的数据库的访问。可以像here所描述的那样打开远程连接,但对于生产环境来说这不是一个好主意。
更好的方法是为所需的命令添加别名here。
为了在代码中调用artisan等,Laravel有一种在远程服务器上运行命令的内置方式。首先将连接信息添加到app / config / remote.php文件中。对于流浪汉,它应该看起来像这样:
'connections' => array(
'production' => array(
'host' => 'localhost',
'username' => 'vagrant',
'password' => 'vagrant',
'key' => '',
'keyphrase' => '',
'root' => '/vagrant',
),
),
然后像这样执行artisan migrate:
SSH::run(array('cd /vagrant', 'php artisan migrate'));
你也可以做更高级的事情。这是documentation。