Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过SSH隧道将PHP/Codeigniter应用程序连接到远程MySQL数据库?_Php_Mysql_Codeigniter_Ssh_Mysqli - Fatal编程技术网

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

如何通过SSH隧道将PHP/Codeigniter应用程序连接到远程MySQL数据库?,php,mysql,codeigniter,ssh,mysqli,Php,Mysql,Codeigniter,Ssh,Mysqli,我正在将一个意大利面代码PHP应用程序重构到Codeigniter框架中,该应用程序的开发版本位于与生产数据库不同的服务器上。为了进行测试,我想从我的EC2实例建立一个ssh隧道,在那里我托管开发版本到生产数据库。我已经通过libssh2和phpseclib成功地创建了与远程服务器的ssh连接。但是,在ssh隧道建立之后,我无法使用codeigniter mysqli db驱动程序连接到数据库 每次尝试连接到数据库时,都会出现以下错误: 无法使用提供的设置连接到数据库服务器。 文件名:core/

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

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

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

MY_控制器代码为:

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函数中,如下所示,但没有效果。有人知道我怎样才能做到这一点吗

提前感谢您的帮助


Mike

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

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

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

Er-确实要将开发系统连接到生产数据库吗?您最好在开发系统上复制生产数据库。生产数据库是1TB+的,在开发服务器上复制生产数据库将是一项巨大的工作。我感谢您的谨慎,但我很好奇除了这个问题之外还有什么可能性——如果我通过ssh连接到远程开发数据库,或者我希望生产应用程序远程隧道到生产数据库,有没有办法让它工作?谢谢你的想法!谢谢你的回复。我真的更喜欢应用程序以编程方式建立连接,我已经能够分别使用libssh2和phpseclib来实现这一点。但是,Codeigniter mysqli数据库驱动程序,即使我修改它以接受ssh_隧道对象作为参数,也不会建立连接。