2012-08-19 137 views
1

我在Amazon AWS上設置了兩臺服務器。一臺服務器運行PHP,另一臺服務器運行MySQL。我可以通過我的終端和MySQL查詢瀏覽器連接到MySQL數據庫。在亞馬遜AWS上從PHP服務器連接到MySQL服務器

我想獲得PHP和MySQL服務器之間的連接。

這裏是我使用(對於「localhost」的數據庫作品)

$dbbase = 'mydb';    
$dbuser = 'myuser';   // Your MySQL username 
$dbpass = 'mypassword';  // ...and password 
$dbhost = 'localhost:3306'; // Internal IP for MYSQL Server 

// connect to database 
$dblink = mysql_connect($dbhost, $dbuser, $dbpass) 
    or die ("System Down"); 

mysql_select_db($dbbase, $dblink) 
    or die ("Database Down"); 

這是我的理解,我應該能夠這條路線的內部AWS業務的PHP代碼,但在這一點上我將採取任何可行的工作,並從那裏建立。

這裏是我做了什麼:

  • 添加了PHP服務器到安全組對MySQL的IP(3306)權限

  • 嘗試使用內部,外部和私人MySQL服務器的你的MySQL服務器上的IP/DNSS爲$ DBHOST變量

  • 創建爲myuser @%(通配符)

任何想法或提示將不勝感激。

+1

您能夠從PHP機打mysql的機器上3306?試試這個命令:'telnet 3306'。看看它是否有效。 – Christopher 2012-08-19 19:47:11

+0

當我做'遠程登錄'它說:「找不到命令」。我嘗試過'平',但它只是坐在那裏,直到它超時纔會發生。 – Chris 2012-08-19 21:18:23

+0

我在安全組中打開了ICMP,現在我可以從PHP服務器ping MySQL服務器。 – Chris 2012-08-19 23:09:25

回答

1

我有這個工作。

我認爲最大的訣竅是添加此規則到安全組:

類型:MySQL

來源:10.0.0.0/8

我的理解是,10.0 .0.0/8涵蓋所有內部亞馬遜IP。我認爲你可以加強這一點,但服務器的內部IP可能會發生變化,所以需要進行管理。

然後在我的PHP腳本中,我使用了我的MySQL服務器的專用DNS。它應該看起來像這樣:ip-10-10-100-100.ec2.internal:3306

最後,我認爲這就是我所做的一切。

+0

最好將安全組用於AWS到AWS的內部規則。如果您有MySQL安全組和PHP安全組,則MySQL安全組應接受來自3306上PHP組的入站流量。 – ceejayoz 2012-08-20 01:12:52

2

我有同樣的問題 - 原來MySQL的PHP​​擴展不再包含在PHP5中!內置:DOM,LibXML,Iconv,SimpleXML,SPL和SQLite,以下內容不再內置:MySQL和Overload。「在PHP 5(更新後的PHP 5.0.4)中,存在以下變化。

來源:http://php.net/manual/en/install.windows.extensions.php