簡體   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