我正在尝试在本地机器上设置开发环境,访问托管在AWS上的MySQL数据库,但是我一直收到“无法连接”的消息。
mysql_connect('xxx.xxx.xxx.xxx:3306', 'USERNAME', 'PASSWORD');
我也在my.cnf文件中注释掉了bind-address,并授予连接的IP地址权限。
有人成功地将此设置工作过吗?
我正在尝试在本地机器上设置开发环境,访问托管在AWS上的MySQL数据库,但是我一直收到“无法连接”的消息。
mysql_connect('xxx.xxx.xxx.xxx:3306', 'USERNAME', 'PASSWORD');
我也在my.cnf文件中注释掉了bind-address,并授予连接的IP地址权限。
有人成功地将此设置工作过吗?
我在2013年8月通过Elastic Beanstalk创建的RDS实例经历如下:
0) 假设RDS实例已经被创建
1) 登录管理控制台:https://console.aws.amazon.com/console/home
2) 选择服务->VPC
3) 选择安全组(在左侧)
4) 选择其描述为“RDS DB...的安全组”
5) 在底部的所选安全组面板中,选择“入站”
6) 选择MySQL作为规则。
7) 输入我的本地机器的IP地址,例如145.23.32.15/32
8) 点击添加规则并应用规则更改
这样做后,我就可以使用mysql从我的本地机器连接到数据库。
a) 从管理控制台选择服务->RDS
b) 点击DB实例(我只有一个),然后选择所需实例的“转到详细信息页面”
c) 从端点获取主机和端口
d) 从终端会话中执行类似以下的操作:mysql --host blah.blah.blah.us-west-2.rds.amazonaws.com --port 3306 -u my-user-name -p
如果您在AWS上通过RDS实例使用MySql,则必须将要连接的IP地址添加到“DB安全组”中。要执行此操作,请转到AWS管理控制台并选择RDS。
1. 在左侧面板中选择“DB安全组”
2. 选择“默认”
3. 从下拉框中选择“CIDR / IP”,并输入您工作站的公共IP地址。 例如:
23.234.192.123/32 (不要忘记为单个ip添加/32)
4. 点击“添加”
5. 等待几分钟以使其生效,然后连接您的MySql客户端。
这仅适用于RDS实例,如果您正在使用安装在EC2实例上的MySql,则与从任何远程计算机访问MySql的指令相同。
我猜这是被亚马逊防火墙屏蔽了,尝试使用SSH隧道:
http://blogs.oracle.com/divyen/entry/connecting_mysql_server_on_amazon
注意:不要将MySQL开放给公共互联网,即使使用IP过滤也不行。SSH隧道更加安全。最棒的部分是:该隧道可以通过本地主机的localhost:3306访问,无需更改配置 : )
mysql_connect('localhost:3307', $user, $pw)
。 - Stephan B在 AWS 控制台中更新 VPC 安全组(类似于 mikemay 上面的内容)
本地 MySQL 配置中 my.cnf 更新
关闭 Windows 防火墙
Command Prompt with
mysql.exe -h <AWS DB Endpoint> -U <UserName> -P <Port Number, likely 3306> -p
注意:为了确保连接成功,您必须将您的IP地址添加到“DB安全组”中。该链接位于左侧栏目中,标题为“导航”。我使用“CIDR/IP”选项(另一个选项是EC2安全组)。请务必在IP之后包含“/##”,例如他们在示例中使用的“/32”(您将在页面上看到它)。几秒钟后,IP地址应该得到授权。
完成以上步骤后,请返回MySQL Workbench并完成新服务器实例的创建过程。
要使用该连接,您的代码可能会像这样(这是我Java代码的摘录):
String url = "jdbc:mysql://yourdatabasename.foo.us-east-1.rds.amazonaws.com:3306/";
String userName = "your_user_name";
String password = "your_password";
String dbName = "your_db_name";
String driver = "com.mysql.jdbc.Driver";
Connection connection = DriverManager.getConnection(url + dbName, userName, password);
当我们创建RDS时,需要配置防火墙以接受来自本地或其他实例的MySQL连接,因此数据包在防火墙级别被丢弃。要解决这个问题,您需要:
记录下你的MySQL服务器的安全组(在我的情况下是awseb-e)
从列表中选择MySQL,添加客户端服务器的详细信息并保存规则
注意:一旦你选择了我的IP,AWS会选择你的IP,如果你需要其他IP,请使用
https://www.whatismyip.com/my-ip-information/
并添加您的IP4 IP
互联网网关
在创建过程中发现我的实例的"互联网网关"配置不正确。
在确保实例设置为公共访问并设置正确的"入站规则"后,我还需要按照故障排除指南中的步骤配置我的虚拟私有云(VPC)的互联网网关。
确保在进行过程中记下您的VPC、子网、互联网网关和路由表ID,因为您需要参考它们。