如何使用ssh在Laravel 5中连接远程数据库

时间:2016-03-16 11:50:20

标签: php laravel ssh

我使用的是Laravel 5.0。我想知道如何使用SSH访问远程数据库。

database.php中

'mysql' => [
            'driver'    => 'mysql',
            'host'      => 'www.xxxxx.in',
            'port' => '2222',
            'database'  => 'xxxx_xxx',
            'username'  => 'xxxxx_xx',
            'password'  => 'xxxx0xx',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => false,
            'engine'    => null,
        ],

2 个答案:

答案 0 :(得分:4)

您应该创建SSH隧道。

有关SSH隧道的更多信息以及此处的一些示例: http://chxo.com/be2/20040511_5667.html

示例:

ssh -fNg -L 3307:127.0.0.1:3306 myuser@remotehost.com
mysql -h 127.0.0.1 -P 3307 -u dbuser -p db

当然,您需要更改凭据:

'mysql' => [
            'driver'    => 'mysql',
            'host'      => 'www.xxxxx.in',
            'port'      => '3307',
            'database'  => 'xxxx_xxx',
            ...
        ],

答案 1 :(得分:2)

您需要创建一个SSH隧道as Alexey says

您还需要将MySQL连接端口转发到本地;正如阿列克谢所做的那样。

然后在Laravel配置中,将端口设置为转发端口。因此,基于Alexey的答案,您的数据库配置将如此读取

'mysql' => [
      'driver'    => 'mysql',
      'host'      => 'www.xxxxx.in',
      'port'      => '3307',
      'database'  => 'xxxx_xxx',
      'username'  => 'xxxxx_xx',
      'password'  => 'xxxx0xx',
      'charset'   => 'utf8',
      'collation' => 'utf8_unicode_ci',
      'prefix'    => '',
      'strict'    => false,
      'engine'    => null,
],

修改
如果Alexey的回答消失,这些是我回答的相关部分

创建ssh隧道

ssh -fNg -L 3307:127.0.0.1:3306 myuser@remotehost.com

使用

在本地连接
mysql -h 127.0.0.1 -P 3307 -u dbuser -p db