使用PHP / Codeigniter连接到远程数据库(EC2实例)?

时间:2012-09-13 16:13:11

标签: php mysql codeigniter ssh amazon-ec2

我已经在我的Mac上设置了MNPP(NAMPx版本的XAMPP),但无法确定如何连接到不是localhost的数据库。我在EC2实例上有一个MySQL数据库,我想连接到它。

我正在使用Codeigniter / PHP并且以下配置有效:

$db['default']['hostname'] = "localhost"; 
$db['default']['password'] = "";

以下 NOT 工作:

$db['default']['hostname'] = "mysite.com"; //the name of my EC2 instance
$db['default']['password'] = "my_password";

我可以使用MySQL GUI,Sequel Pro,使用上面的配置和我的EC2 SSH密钥(~/.ssh/mysite.pem)连接到这个EC2数据库,我无法通过我的本地主机上的PHP应用程序以编程方式执行此操作

我是否需要更改my.cnf文件或其他任何地方的任何内容才能使其正常工作?

1 个答案:

答案 0 :(得分:2)

确保您的主机正在侦听TCP 3306。

您还需要为要在数据库上授予的新主机上的用户设置权限。

在远程数据库上,运行:

GRANT ALL ON foo.* TO username@'your-ip-address-here' IDENTIFIED BY 'PASSWORD';

your-ip-address-here替换为localhost的公共IP,将username和PASSWORD替换为您各自的值。

这将允许您的应用程序通过MySQL与远程主机通信。这些应用程序不直接支持SSH隧道。

或者,您可以创建一个SSH隧道,它将您的localhost:3307桥接到remotehost:3306,然后在您的应用程序中,您仍然可以使用localhost,但将mysql端口更改为{{1 }}。