【问题标题】:Connect to MySQL on AWS from local machine从本地机器连接到 AWS 上的 MySQL
【发布时间】:2012-01-10 18:11:39
【问题描述】:

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

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

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

有人成功地完成了这项工作吗?

【问题讨论】:

  • 只是我的 2 美分:您是否允许在您的公共 IP 上的 AWS 主机安全组上打开端口 3306 ?
  • 不...我的意思是我家的机器...这将是一个远程连接。
  • 检查答案:您需要在关联的安全组中打开您的 MySQL 端口。
  • 可能出于安全考虑禁用了与 MySQL 的 TCP 连接?检查 /etc/mysql/my.cnf 中的跳过网络

标签: mysql amazon-web-services remote-access


【解决方案1】:

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

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

注意:不要将 MySQL 开放到公共互联网,即使使用 IP 过滤也不行。 SSH 隧道更加安全。最好的部分:可以在您的机器上使用 localhost:3306 访问隧道,无需更改配置:)

【讨论】:

  • 用PHP怎么样? mysql_connect() 函数?
  • 上面的博客条目使用3307作为本地端口,因此它不会干扰本地mysql。然后你可以通过隧道使用mysql_connect('localhost:3307', $user, $pw)到AWS。
  • 感谢它与 MySQL Workbench 一起工作......仍然遇到 mysql_connect 问题,但我会玩它。
  • 链接失效了,请务必将相关部分放在答案中,不要只提供链接。
【解决方案2】:

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

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

【讨论】:

  • 我没有将客户端的 IP 地址添加到 RDS 实例的繁琐步骤,而是连接到可以连接到 RDS 的正在运行的 EC2 实例。所以你在 MySQL WB 的“Manage DB Connections”对话框中的连接方式是“Standard TCP/IP over SSH”,然后指定 SSH 参数,最重要的是 MySQL 主机名,也就是 RDS 主机名。
  • @mblackwell8 有人说 MySQL WB 吗?我们正在尝试从本地的 php 应用程序连接。
  • 这已经过时了,因为左侧面板中没有“数据库安全组”部分。
【解决方案3】:

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

注意:为了真正连接,您必须在“数据库安全组”中添加您的 IP 地址。该链接位于左侧列中,标题为“导航”。我使用“CIDR/IP”选项(另一个是 EC2 安全组)。确保在 IP 之后包含“/##”,例如他们在示例中使用的“/32”(您将在页面上看到它)。几秒钟后,IP 地址应该会被授权。

之后,返回 MySQL Workbench 并完成 New Server Instance 创建过程。

要使用连接,您的代码可能如下所示(摘自我的 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);

【讨论】:

    【解决方案4】:

    我在 2013 年 8 月对通过 Elastic Beanstalk 创建的 RDS 实例的体验如下。

    0) 假设 RDS 实例已经创建
    1) 登录管理控制台:https://console.aws.amazon.com/console/home
    2) 选择服务->VPC
    3) 选择安全组(在左侧)
    4) 选择描述为“RDS DB 的安全组...”的组
    5) 在页面底部的 Security Group Selected 面板中,选择“Inbound”
    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

    【讨论】:

    • 很好的答案!这正是我想要的
    • 我做到了。然后在终端我输入:ssh database.blablabla.us-west-2.rds.amazonaws.com:3306,但它显示“对主机的操作 blablabla 操作超时”
    • 试试 mysql --host blah-blah-blah.us-west-2.rds.amazonaws.com --port 3306 -u -p
    • 还有一件事要检查:当您从 AWS 控制台创建 RDS 实例时,您必须将“公开可用”设置设置为是。除了在安全组中打开入站端口之外,还必须这样做
    • 5 年后,但这仍然是这个问题的简单和最佳答案。是的,数据库必须设置为是才能公开使用。
    【解决方案5】:

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

    1. AWS 控制台中的 VPC 安全组更新(类似于上面的 mikemay)

      • https://console.aws.amazon.com,单击服务(左上角)并选择VPC。
      • 接下来选择安全组
      • 单击具有“RDS DB 安全组...”描述的安全组
      • 在“入站”选项卡上,在“创建新规则”下拉列表中选择“MYSQL”。
      • 以 CIDR 格式添加您的 IP 地址,然后单击添加规则。
      • 单击应用规则更改。
    2. 本地 MySQL 配置中的 my.cnf 更新

      • 将“绑定地址 = 127.0.0.1”更改为“绑定地址 = 0.0.0.0”
      • 注释掉“skip-networking”
    3. 关闭 Windows 防火墙

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

    进行这些更改后,我可以通过两者进行连接

    • 使用数据库的 MySQL WorkBench->连接到数据库
    • 带有

      的命令提示符
      mysql.exe -h <AWS DB Endpoint> -U <UserName> -P <Port Number, likely 3306> -p
      

    【讨论】:

      【解决方案6】:

      当我们创建 RDS 时,需要将防火墙配置为接受来自本地或其他实例的 mySQL 连接,因此数据包在防火墙级别被丢弃,要解决此问题,您需要:

      • 登录到您的 AWS 控制台转到 RDS

      记下你的 mySQL 服务器的安全组(在我的例子中是 awseb-e)

      • 点击安全组
      • 在中心菜单 awseb 中单击您的组
      • 点击入站标签

      从列表中选择 mySQL,添加您的客户端服务器的详细信息并保存规则

      注意:一旦您选择了我的 IP,AWS 选择您的 IP,如果您需要其他 IP,请使用

      https://www.whatismyip.com/my-ip-information/

      并添加您的 IP4 IP

      【讨论】:

        猜你喜欢
        • 2017-06-13
        • 1970-01-01
        • 2016-07-12
        • 1970-01-01
        • 2015-11-28
        • 2022-01-13
        • 2019-01-29
        • 1970-01-01
        • 2016-08-18
        相关资源
        最近更新 更多