2011-12-01 135 views
23

我想在我的本地机器上设置一个开发环境,以访问AWS上的MySQL数据库,但我不断收到“无法连接”消息。从本地机器上连接到AWS上的MySQL

mysql_connect('xxx.xxx.xxx.xxx:3306', 'USERNAME', 'PASSWORD'); 

我还注释了my.cnf文件中的绑定地址,并授予了正在连接的IP地址的权限。

任何人都成功得到这个工作?

+0

不......我的意思是我的机器在我家里......这将是一个遥远的地方连接。 –

+0

查看答案:您需要在关联的安全组中打开您的MySQL端口。 – jsalonen

+0

可能的TCP连接到MySQL的安全被禁用?检查/etc/mysql/my.cnf中的跳过网络 –

回答

12

我想这是亚马逊的防火墙,请尝试使用SSH隧道:

http://blogs.oracle.com/divyen/entry/connecting_mysql_server_on_amazon

注意:不要打开MySQL的公众网络,利用IP过滤即使是在。 SSH隧道更安全。最好的部分是:你的机器上可以使用本地主机:3306访问隧道,不需要更改配置:)

+0

如何使用PHP? mysql_connect()函数? –

+0

上面的博客条目使用3307作为本地端口,因此它不会干扰本地mysql。您可以使用'mysql_connect('localhost:3307',$ user,$ pw)'然后通过隧道到AWS。 –

+0

感谢它与MySQL Workbench一起工作......仍然遇到了mysql_connect的问题,但我会一起玩。 –

27

如果您通过RDS实例在AWS上使用MySql,则必须添加您想要的IP地址连接到“数据库安全组”。要执行此操作,请转至您的AWS管理控制台并选择RDS。从选择框的左侧面板
2.选择“默认”
3.选择“CIDR/IP”上
1.选择“DB安全组”,然后输入您工作站的公共IP地址。例如:
23.234.192.123/32(不要忘了/ 32的单一IP
4.单击“添加”
5.等待几分钟让它生效,然后连接您的MySql客户端。

这仅适用于RDS实例,如果您使用的是安装在EC2实例上的MySql,则说明与从任何远程计算机访问MySql相同。

+2

,而不是通过将您的客户端的IP地址添加到RDS实例,我只是连接到可以连接到RDS的正在运行的EC2实例。因此,您在MySQL WB的“管理数据库连接”对话框中的连接方法是“标准TCP/IP over SSH”,然后指定SSH参数,最重要的是指定MySQL主机名,即RDS主机名。 – mblackwell8

+0

@ mblackwell8有没有人对MySQL WB有任何提及?我们正试图从本地连接一个php应用程序。 – Neo

+1

由于左侧面板中没有“数据库安全组”部分,因此现在已过时。 –

1

我一直在使用MySQL Workbench http://www.mysql.com/products/workbench/与RDS,它工作得很好。非常容易创建并保存新的数据库服务实例。点击“服务器管理”下的“新服务器实例”,然后按照提示进行操作。您需要输入该实例的AWS RDS网页中提供的信息(例如,它是端点)。

注意:为了让您真正连接,您必须在“数据库安全组”中添加您的IP地址。该链接位于左侧栏中,标题为“导航”。我使用“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); 
32

我8月2013年的经验是通过弹性魔豆创建一个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)单击数据库实例(我只有一个),然后选择“转到详细页面”所需的实例
C)获得的主机和端口端点
d)从终端会话中执行如下操作:mysql --host blah.blah.blah.us-west-2.rds.amazonaws.com --port 3306 -u my-user-name -p

+2

很好的答案!那正是我正在寻找的 – Ertai

+0

我做到了。然后在终端输入:ssh database.blablabla.us-west-2.rds.amazonaws.com:3306,但它说“操作主机blablabla操作超时” – coolcool1994

+1

尝试mysql --host blah-blah-blah .us-west-2.rds.amazonaws.com --port 3306 -u <我的用户名> -p – mikemay

1

我在Windows 7计算机上,必须进行以下3项更改才能连接到AWS RDB。在AWS控制台

  1. VPC安全组更新(类似于mikemay具有以上)

    • https://console.aws.amazon.com,点击服务(左上图),然后选择VPC。
    • 下一页选择安全组
    • 单击安集团拥有的描述“为RDS数据库安全组......”
    • 在“入站”选项卡,选择“MYSQL”,在创建新规则下拉。
    • 以CIDR格式添加您的IP地址,然后单击添加规则。
    • 单击应用规则更改。在本地MySQL配置
  2. 的my.cnf更新

    • 更改 “绑定地址127.0.0.1 =” 到 “绑定地址= 0.0.0.0”
    • 注释掉“跳过网络“
  3. 关闭Windows防火墙

    • 转到控制面板/系统和安全/ Windows防火墙并关闭Windows防火墙。

这些改变之后,我能够使用数据库 - 通过两个

  • MySQL工作台连接>连接到数据库
  • 命令提示

    mysql.exe -h <AWS DB Endpoint> -U <UserName> -P <Port Number, likely 3306> -p 
    
相关问题