php - 如何通过 SSH 隧道将 PHP/Codeigniter 应用程序连接到远程 MySQL 数据库?

标签 php mysql codeigniter ssh mysqli

我正在将意大利面条代码 PHP 应用程序重构到 Codeigniter 框架中,并且该应用程序的开发版本与生产数据库位于不同的服务器上。为了进行测试,我想从我托管开发版本的 EC2 实例到生产数据库建立一个 ssh 隧道。我已经通过 libssh2 和 phpseclib ( http://phpseclib.sourceforge.net/ ) 成功地创建了与远程服务器的 ssh 连接。但是,在建立 ssh 隧道后,我无法使用 codeigniter mysqli db 驱动程序连接到数据库。

每次尝试连接到数据库时,我都会收到以下错误:

无法使用提供的设置连接到您的数据库服务器。 文件名:core/MY_Controller.php 行号:6

MY_Controller 代码是:

1  <?php defined('BASEPATH') OR exit('No direct script access allowed');
2
3  class MY_Controller extends CI_Controller {
4 
5  public function __construct() {
6       parent::__construct();
7       $this->auth = new stdClass;
8       $this->load->library('flexi_auth');
9       if (!$this->flexi_auth->is_logged_in()) {
10          header('Location: /login');
11      }
12  }

我修改了 mysqli 驱动程序以将隧道对象作为参数包含在 mysqli real_connect 函数中,如下所示,但无济于事。有谁知道我该怎么做?

提前感谢您的帮助!

迈克

最佳答案

我认为我的第一次尝试是创建一个 ssh 隧道,如下所示:

my_dev_ec2# ssh -L 3306:localhost:3306 myuser@my_production_ec2

然后配置 mysqli 数据库以连接到 localhost,就好像它在生产实例中一样。

关于php - 如何通过 SSH 隧道将 PHP/Codeigniter 应用程序连接到远程 MySQL 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17332849/

相关文章:

php - 更改特定行的 PHP ResultSet 值

mysql - 词尾有未知字符

MySQL:需要计算一个月的最后一个星期五

php - 'userc.u_id' 中的未知列 'on clause'

codeigniter - 在子文件夹中安装 CodeIgniter 应用程序

php - 如何将表克隆到另一个数据库?

php - MySQL 数据库更新仅使用数字

php - 替换句子中具有不同值的单词

php - 获取 REQUEST_URI 并且不要覆盖

mysql - 这是否可以将流量分配到我的 RDS 只读副本?