首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带有SSH的Laravel MySql DB连接

带有SSH的Laravel MySql DB连接
EN

Stack Overflow用户
提问于 2014-08-26 06:34:11
回答 3查看 35.5K关注 0票数 28

我有几个想要访问的远程数据库,但它们位于只能通过SSH使用密钥访问的服务器上。

在Sequel Pro中,我连接到这个远程数据库,如下所示:

​我如何配置我的Laravel应用程序来连接到这样的数据库?

代码语言:javascript
运行
复制
'mysql_EC2' => array(
        'driver'    => 'mysql',
        'host'      => '54.111.222.333',
        'database' => 'remote_db',
        'username' => 'ubuntu',
        'password' => 'xxxxxxxxxxxxxxxxxxxx',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-08-26 06:51:39

这里有一个可行的解决方案,可以通过带有密钥的SSH来处理托管在EC2实例上的数据库。

首先,在数据库配置中设置相应的连接:

代码语言:javascript
运行
复制
'mysql_EC2' => array(
        'driver'    => 'mysql',
        'host'      => '127.0.0.1:13306',
        'database' => 'EC2_website',
        'username' => 'root',
        'password' => 'xxxxxxxxxxxxxxxx',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),

第二,建立通道:

代码语言:js
复制
ssh -i ~/dev/awskey.pem -N -L 13306:127.0.0.1:3306 ubuntu@54.111.222.333

(我们将SSH密钥传递给i参数并建立SSH连接,绑定到端口13306)

第三,按照在Laravel应用程序中通常使用的方式使用DB:

代码语言:javascript
运行
复制
$users = DB::connection('mysql_EC2')
        ->table('users')
        ->get();

var_dump($users);
票数 45
EN

Stack Overflow用户

发布于 2017-01-17 21:46:01

我写了一个Laravel包来为我们处理。stechstudio/laravel-ssh-tunnel

composer require stechstudio/laravel-ssh-tunnel

注册TunnelerServiceProvider::class并在您的.env

票数 22
EN

Stack Overflow用户

发布于 2021-02-26 10:23:30

以防ssh服务器只是隧道,而db不在那里。你可以用这个。

ssh -i ~/path/your-key.pem -N -L 13306:your-db-hostname.com:3306 your-ssh-tunnel-username@your-tunnel-hostname.com

并将laravel .env或数据库配置文件中的db主机名设置为127.0.0.1端口13306

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25495364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档