2016-04-25 46 views
0

我對從AWS到GCE的系統遷移中遇到的問題感到有點沮喪。無法通過php在GCE實例與MySQL連接到MySQL數據庫

我有一個ec-2實例在亞馬遜網絡服務上運行,完美的工作和配置。

問題是,谷歌提供100000美元的信貸在Startup的特別計劃中,我公司的首席執行官要求進行遷移,所以我就是這樣。

我已經全部運行,幾乎完全配置在一個ubuntu 14.04 LTS實例中,我幾乎說了,因爲我無法實現一個簡單的任務,如連接到一個Mysql db :(我想我錯過了一些東西在某個地方,我的心靈得到了破壞,所以我需要你的幫助。

首先,我只在遠程服務器上有這個問題,我已經在本地測試了它幾百次,當然還有aws,目前它在生產狀態,所以我不知道是什麼或者正是問題是

我GCE配置:

OS:Ubun TU 14.04 LTS HHD:30GB SSD的持久性磁盤 CPU:2倍 RAM:7.5 GB 區:歐洲west1-C 靜態IP

所以,我安裝燈和phpMyAdmin的,所有的作品就像一個魅力。我禁止從遠程客戶端訪問Mysql數據庫,配置php和apache模塊。

Web應用程序是一個Rest API,基於PHP(Slim),就像我剛纔所說的那樣,現在正在使用AWS。

當我打電話給和不需要從數據庫檢索任何數據的端點時,它運行良好,當端點調用嘗試訪問數據庫時,問題就出現了。在這種情況下,請求永遠不會響應,它會一直加載直到我中止請求。這有點奇怪,因爲我可以通過phpmyadmin來操作所有的數據,這些數據以與mysqli相同的方式訪問數據庫。

如果我檢查了日誌,它們上沒有打印任何東西。只有當我更改「locahost」主機參數時,它會打印一條日誌說:「XXX.XXX.XXX.XXX上沒有MySQL數據庫」(IP)。

config.php文件

define('DB_USERNAME', 'user'); 
define('DB_PASSWORD', 'pass'); 
define('DB_HOST', 'localhost'); 
define('DB_NAME', 'db_name'); 

DbConnect.php

function connect() { 
    include_once dirname(__FILE__) . '/Config.php'; 

    // Connecting to mysql database 
    $this->conn = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME); 

    // Check for database connection error 
    if (mysqli_connect_errno()) { 
     echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

    /* change character set to utf8 */ 
    if (!$this->conn->set_charset("utf8")) { 
     echo "Error loading character set utf8: " . $this->conn->error; 
    } 

    // returing connection resource 
    return $this->conn; 
} 

loops forever img

Expected Response img

歡迎任何幫助!

回答

0

您是否更改了my.cnf MySQL配置文件中的bind-address參數?這引起了我幾次。默認情況下,Ubuntu 14.04中的MySQL只會監聽本地主機並忽略遠程連接。

此外,檢查出了這個問題的答案,它可能給你一些很好的幫助:Remote Connections Mysql Ubuntu - bind address failed

+0

我忘了提及,但我也試着到IP綁定。結果是類似的:對於本地主機,它始終在等待從未到來的響應,並且如果我嘗試通過my.cnf文件中的綁定IP訪問,則結果相同,無限響應等待。如果我解除綁定ip,它會返回一個異常,「地址XXX.XXX中沒有數據庫.........」「無論如何;-) – SvOzMaS

+0

沒有防火牆阻止連接到您的服務器嗎?如ufw或iptables? https://help.ubuntu.com/12.04/serverguide/firewall.html – ironpilot