繁体   English   中英

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

[英]cant connect to mysql remote server from aws ec2

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

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

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

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

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

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

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

  • 键入 HTTP,所有端口为 80
  • 为所有输入 Mysql 端口 3306
  • 所有人的所有流量
  • 键入 SSH,所有端口都为 22

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

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

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

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

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

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

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

apt-get 安装 php5-mysqlnd

请记住,安装 mysqlnd 会破坏您的应用程序代码。 为了让它工作,我在 php.ini 文件的末尾添加了以下行。 php.ini 文件的路径可以通过php.info() 的输出找到

扩展名=mysqlnd.so

安装成功后,我看到需要在服务器中安装 curl 因为我收到错误。 我通过以下命令安装了它。 安装后确保重启apache服务器

须藤 apt-get 安装 php5-curl

参考:

调用未定义的方法 mysqli_stmt::get_result

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM