无法从aws ec2连接到mysql远程服务器

时间:2015-10-21 11:35:42

标签: php mysql web-services amazon-web-services amazon-ec2

我是aws的新手,并在 ubuntu服务器上创建了一个ec2实例,安装了php,mysql和apache,我已经托管了几个html文件和其他脚本php文件。该网站工作正常。我创建了一个 webservice ,必须在不同的客户端中使用。此Web服务的目的是在远程数据库表中插入一些值。

a)www.abc.com/client/add.php返回成功,我查看在db表中更新的值

上面的web服务在测试服务器上工作正常但是当我在aws ec2上传了同一组文件时,web服务给了我一个错误。

b)www.abc.com/client/add.php返回失败。我检查了db配置文件,远程主机的连接字符串是正确的。

我也面临着将sms api推向消费者细胞的类似问题。在测试服务器上,我的代码工作正常,短信被推送,但同一段代码不能在aws ec2上工作。

我怀疑,它与ec2安全组中的规则有关,因为它无法连接到远程mysql主机和sms网关。 你们中的任何人都可以帮我分配适当的规则吗?

目前,我已为入站规则

分配了以下权限
  • 输入HTTP,所有
  • 的端口80
  • 输入所有
  • 的Mysql端口3306
  • 所有
  • 的所有流量
  • 键入SSh,所有
  • 的端口22

我是否还必须分配任何出站规则?

1 个答案:

答案 0 :(得分:0)

首先感谢@bluto指向我能够看到错误并修复错误的日志文件。 我的入站和出站规则是合适的。 从日志文件中,我确定了 mysql_connect():拒绝用户访问

要解决此问题,我必须在db webserver的allowable host部分中显式分配主机IP地址。 对于我的SMS api无法正常工作的第二个问题,我在日志文件中找出了错误

PHP致命错误:调用未定义的方法mysqli_stmt :: get_result()

为了解决这个问题,我发现需要mysqlnd来执行Bind_result()&我的aws ubuntu服务器中缺少fetch()。

http://php.net/manual/en/mysqli-stmt.get-result.php

我必须通过以下命令安装mysqlnd。

apt-get install php5-mysqlnd

请记住,安装mysqlnd会破坏你的appcode。为了它的工作,我在php.ini文件的末尾添加了以下行。可以通过php.info()

的输出找到php.ini文件的路径

extension = mysqlnd.so

安装成功后,我发现当我收到错误时需要在服务器中安装curl。我通过以下命令安装它。确保在安装后重新启动Apache服务器

sudo apt-get install php5-curl

参考文献:

Call to undefined method mysqli_stmt::get_result

https://askubuntu.com/questions/386887/install-curl-ubuntu-12-04