在Amazon AWS上从PHP服务器连接到MySQL服务器

在Amazon AWS上从PHP服务器连接到MySQL服务器,php,mysql,amazon-web-services,connection,internal,Php,Mysql,Amazon Web Services,Connection,Internal,我在Amazon AWS上安装了两台服务器。一台服务器运行PHP,另一台服务器运行MySQL。我可以通过终端和MySQL查询浏览器连接到MySQL数据库 我正在尝试在PHP和MySQL服务器之间建立连接 下面是我正在使用的PHP代码(适用于“localhost”数据库) 这是我的理解,我应该能够路由这一内部AWS流量,但在这一点上,我会采取任何工作,并从那里建立 以下是我所做的: 将PHP服务器的ip添加到MySQL(3306)权限的安全组中 尝试使用MySQL服务器的内部、外部和私有IPs/

我在Amazon AWS上安装了两台服务器。一台服务器运行PHP,另一台服务器运行MySQL。我可以通过终端和MySQL查询浏览器连接到MySQL数据库

我正在尝试在PHP和MySQL服务器之间建立连接

下面是我正在使用的PHP代码(适用于“localhost”数据库)

这是我的理解,我应该能够路由这一内部AWS流量,但在这一点上,我会采取任何工作,并从那里建立

以下是我所做的:

  • 将PHP服务器的ip添加到MySQL(3306)权限的安全组中

  • 尝试使用MySQL服务器的内部、外部和私有IPs/DNS作为$dbhost变量

  • 在MySQL服务器上创建了myuser@%(通配符)

如果您有任何想法或建议,我们将不胜感激。

我已将其付诸实施

我认为最大的诀窍是将此规则添加到安全组:

类型:MySQL

资料来源:10.0.0.0/8

我的理解是10.0.0.0/8涵盖了所有亚马逊内部IP。我认为您可以加强这一点,但您的服务器的内部IP可能会发生变化,因此需要对其进行管理

然后在我的PHP脚本中,我使用了MySQL服务器的私有DNS。它应该是这样的:
ip-10-10-100-100.ec2.内部:3306


最后,我想这就是我所做的一切。

我也遇到了同样的问题——原来PHP的MySQL扩展不再包含在PHP5中

“在PHP5(更新的PHP5.0.4)中,存在以下更改。内置:DOM、LibXML、Iconv、SimpleXML、SPL和SQLite。以下内容不再内置:MySQL和重载。”


来源:

你能从3306的PHP机器上点击mysql机器吗?尝试此命令:
telnet 3306
。看看它是否有效。当我使用“telnet”时,它会显示“未找到命令”。我尝试了“ping”,但它只是停留在那里,直到超时才会发生任何事情。我在安全组中打开了ICMP,现在我可以从PHP服务器ping MySQL服务器。最好对内部AWS到AWS规则使用安全组。如果您有一个MySQL安全组和一个PHP安全组,MySQL安全组应该在3306接受来自PHP组的入站流量。
$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");