【问题标题】:cant connect to mysql remote server from aws ec2无法从 aws ec2 连接到 mysql 远程服务器
【发布时间】:2016-01-20 09:21:22
【问题描述】:

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

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

上述网络服务在测试服务器上运行良好,但是当我在 aws ec2 上上传相同的文件集时,网络服务给了我一个错误。

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

在集成短信 api 以将短信推送到消费者单元时,我也面临类似的问题。在测试服务器上,我的代码工作正常并且推送了短信,但同一段代码在 aws ec2 上不起作用。

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

目前我已为入站规则分配了以下权限

  • 输入 HTTP,所有端口为 80
  • 全部输入Mysql 3306端口
  • 所有流量
  • 键入 SSh,端口 22 用于所有

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

【问题讨论】:

  • @bluto:我看不到任何错误。我正在尝试通过 POST 方法插入值,然后检查是否成功插入。插入不成功时,我显示错误。相同的代码在 Linux 共享服务器梦想主机上运行良好,问题在于 ec2。
  • 您可以检查错误日志。路径是:/var/log/apache2/error.log
  • @bluto:感谢您提及日志文件的路径。我在日志文件中看到了 php 警告。 无法获取路径中的 mysqli 并且 **Access denied for user **
  • @bluto:这个问题,我会解决,但知道为什么 sms api 不起作用吗?
  • 这取决于使用的api。

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


【解决方案1】:

首先感谢@bluto 将我指向日志文件,在那里我能够看到错误并修复它们。 我的 aws 入站和出站规则是合适的。 从日志文件中,我发现 mysql_connect(): Access denied for user。

要解决这个问题,我必须在 db 网络服务器的允许主机部分明确分配主机 IP 地址。 对于我的 SMS api 无法正常工作的第二个问题,我在日志文件中发现了错误

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

为了解决这个问题,我知道执行 Bind_result() 和 fetch() 需要 mysqlnd,这在我的 aws ubuntu 服务器中是缺失的。

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

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

apt-get install php5-mysqlnd

请记住,安装 mysqlnd 会破坏您的应用程序代码。为了让它工作,我在 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

【讨论】:

    猜你喜欢
    • 2015-01-22
    • 2012-04-03
    • 2017-06-26
    • 2016-12-25
    • 1970-01-01
    • 2017-06-26
    • 2019-05-13
    • 1970-01-01
    相关资源
    最近更新 更多