2012-08-19 96 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