【问题标题】:AWS Aurora MySQL serverless: how to connect from MySQL WorkbenchAWS Aurora MySQL 无服务器:如何从 MySQL Workbench 连接
【发布时间】:2019-01-13 22:31:51
【问题描述】:

我尝试在我的项目中使用 AWS Aurora Serverless for MySQL,但我无法连接到它,尽管我有终端节点、用户名和密码。

我做了什么:

  1. 从 AWS 控制台管理中,我选择 RDS > Instances > Aurora > Serverless
  2. 保留默认设置
  3. 创建数据库
  4. AWS 只会创建一个 AWS 集群
  5. 我打开 MySQL Workbench,使用端点、用户名、密码连接数据库

结果:

您的主机与用户“admin”的连接尝试失败 服务器在 xxxxx.cluster-abcdefg1234.eu-west-1.rds.amazonaws.com:3306: 无法连接到 MySQL 服务器 'xxxxx.cluster-abcdefg1234.eu-west-1.rds.amazonaws.com' (60)

我做错了什么吗?请给我建议。

****编辑****

我尝试使用容量类型创建另一个 Aurora 数据库:预配置。我可以通过 MySql 工作台使用用户名和密码无缝连接到端点。表示为工作台开放了3306端口。

关于安全组:

【问题讨论】:

  • 您有哪些安全组可以从运行 MySql Workbench 的任何位置开放对端口 3306 的访问? RDS 上安全组的一般信息:docs.aws.amazon.com/AmazonRDS/latest/UserGuide/…
  • 我编辑了这个问题。我认为端口不是问题,因为我创建了另一个 Aurora MySql 数据库,其类型为:provisioned,并且运行顺畅。但是对于无服务器类型,它不起作用
  • 你能在 3306 端口上远程登录到xxxxx.cluster-abcdefg1234.eu-west-1.rds.amazonaws.com 吗?如果可以-您知道这是配置/身份验证问题,否则,您有网络问题。根据您的操作系统,您可能需要安装 Telnet,然后发出类似telnet xxxxx.cluster-abcdefg1234.eu-west-1.rds.amazonaws.com 3306的命令
  • Aurora Serverless 似乎使用 Privatelink 接口 VPC 终端节点 (VPCE) 来实际提供 VPC 内部的终端节点,因此他们aren't accessible from elsewhere。你在哪里运行工作台?
  • 您可以为 aurora serverless 设置一个可以从 vpc 外部访问的数据 api。有时间我会用mysql workbench试试这个。

标签: mysql amazon-web-services serverless amazon-aurora


【解决方案1】:

我的猜测是您的安全组未正确设置访问权限。您需要明确允许该端口对该实例的远程访问。

来自官方文档:

导致新数据库实例连接失败的两个常见原因是:

  • 数据库实例是使用安全组创建的,该安全组不授权来自设备或 Amazon EC2 实例的连接,其中 MySQL 应用程序或实用程序正在运行。如果数据库实例是 在 VPC 中创建,它必须具有授权的 VPC 安全组 连接。如果数据库实例是在 VPC 之外创建的,则它 必须有一个授权连接的数据库安全组。

  • 数据库实例是使用默认端口 3306 创建的,并且您的公司有防火墙规则阻止从 公司网络中的设备。要修复此故障,请重新创建 具有不同端口的实例。

查看这里了解更多信息:

https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToInstance.html

【讨论】:

  • 感谢您的建议,但事实并非如此(请参阅我的问题更新)
  • AWS 只为 Aurora MySql 类型的 Serverless 创建了集群,根本没有实例。
【解决方案2】:

连接到 Aurora Serverless 数据库集群的一种方法是使用 Amazon EC2 实例。你不能 在预览版中创建可公开访问的 Aurora Serverless 数据库集群。此任务将引导您完成 在您的 VPC 中创建可公开访问的 Amazon EC2 实例。您可以使用此 Amazon EC2 实例 连接到 Aurora Serverless 数据库集群。

这直接来自预览注册时提供的文档。请尝试在您选择的 MYSQL Workbench 或 SQL UI 中创建 EC2 实例并使用 SSH 隧道方法。在预览期间,不允许将 Aurora Serverless 设置为可公开访问。

【讨论】:

【解决方案3】:

来自https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/aurora-serverless.html

  • 您不能为 Aurora Serverless 数据库集群提供公共 IP 地址。
  • 您只能从一个 基于 Amazon VPC 服务的虚拟私有云 (VPC)。
  • 您无法通过 AWS VPN 连接或区域间 VPC 对等连接。那里 是通过 区域内 VPC 对等连接;有关详细信息,请参阅 Amazon VPC 用户中的接口 VPC 终端节点 (AWS PrivateLink) 指导。但是,您可以访问 Aurora Serverless 集群的 通过 AWS Direct Connect 连接的端点。

因此,除了通过 EC2 实例进行 SSH 连接之外,您还可以使用带有 AWS Direct Connect 的 mySQL Workbench 访问您的无服务器集群。

【讨论】:

  • 目前看来,Serverless DB 也可以通过 AWS Client VPN docs.aws.amazon.com/vpn/latest/clientvpn-admin/…访问
  • @Yoga 您是否了解有关如何将 AWS Direct Connect 与 Aurora 结合使用的更多信息?谢谢。
  • Tailscale VPN 设置反向 NAT,您可以将其部署在 EC2 实例上,然后按照this doc 中的步骤将其设置为子网中继。有了这个,我的团队已经能够设置(花了我们 30 分钟)并从 MySQL 工作台和 Sequel Pro 连接到 Aurora Serverless。希望能帮助到你。 :)
【解决方案4】:

最初,我陷入了同样的境地 连接AWS RDS Aurora时的注意事项

  • 无法连接公共,您需要一个与创建 Aurora 所在区域相同的 EC2 实例。

  • Aurora 公共访问应该勾选否(它对我有用)。

  • 您需要创建安全组,您应该在其中添加入站和出站规则(EC2 实例的 IpAddress)。

例如:Type = MYSQL/AURORA、Protocol=TCP、PortRange=3306、Source=Custom 和您的 IP 地址范围,

  • 将实例和安全组修改为实例并立即应用更改。

  • 在创建 Aurora 时,您将创建 MasterName、Pwd 和要连接的默认架构。

  • 创建后,转到集群并获取集群端点并使用您的 EC2 实例和 MySQL Workbench 登录,主机名作为您的集群端点,在创建极光数据库时输入用户名和密码。

    李>

【讨论】:

  • 他在询问 Aurora Serverless,它没有“可公开访问”选项
【解决方案5】:

客户用于连接到仅限 VPC 的服务(如 Aurora Serverless、Amazon Neptune、Amazon DocDB 等)的常见模式是拥有一个中间层(EC2 实例或 ALB 等)并让中间层可以从外部访问专有网络。如果您的用例只是尝试一些查询或连接工作台,那么最简单的做法是:

  1. 解析 serverless db 的 DNS 并获取其 IP
  2. 在您的 VPC 中创建一个 ALB,目标组指向您在 #1 中找到的 IP
  3. 创建一个新的安全组并将其附加到您的 ALB
  4. 更新 SG 以允许从任何您想要的地方入站。如果您想要公共互联网访问,则允许来自所有 IP 的入站,在您的 VPC 中启用互联网网关,并为您的 ALB 使用公共子网。

所有这些都完成后,您将获得一个新的 DNS - 指向您的 ALB。通过以下方式确保您的 ALB 设置正确:

  1. 使用 telnet 连接到您的 ALB 端点。 telnet alb-endpoint alb-port。如果成功,那么您将拥有完整的端到端连接(不是连接到您的 ALB,而是一直连接)。
  2. 验证 ALB 指标以确保所有运行状况检查都通过。

完成后,在工作台中使用 ALB 端点,一切顺利。

此模式仅推荐用于非生产系统。相关的步骤是将 DNS 解析为 IP - 该 IP 是短暂的,当在后台发生规模计算或故障转移时,它可能会发生变化。

希望这会有所帮助,如果您需要有关任何步骤的更多详细信息,请告诉我。这是海王星的相关答案:

Connect to Neptune on AWS from local machine

【讨论】:

  • ALB 不适合此用例,因为 ALB 仅支持 HTTP/HTTPS 协议,但从 MySQL Workbench 连接到 Aurora 需要 MySQL 协议。
  • 然后使用 NLB?
  • 据我了解,NLB 也不适合,因为 Aurora 没有为目标提供 IP 地址或实例 ID。
  • @TakayukiSato 这就是 .但是IP地址可能会改变,所以它绝对是短期/开发解决方案
【解决方案6】:

这可以使用haproxy来实现

在 Centos 上安装 Haproxy-> yum install haproxy

删除此文件 /etc/haproxy/haproxy.cfg 中的现有配置并添加以下行(确保在以下配置中替换您的 RDS 端点 url)

全球 用户代理 组代理

默认值 重试 2 超时连接 3000 超时服务器 5000 超时客户端 5000

监听 mysql-cluster 绑定 0.0.0.0:3307 模式 tcp 服务器 mysql-1 test.cluster-crkxsds.us-west-2.rds.amazonaws.com:3306

修改文件后,启动haproxy -> service haproxy start

您可以使用端口号为 3307 的公共 IP 在 MYSQL Workbench 中连接 Aurora RDS

【讨论】:

    【解决方案7】:

    用于连接 Aurora Serverless 的数据 API 和查询编辑器现已在更多区域推出。

    https://aws.amazon.com/about-aws/whats-new/2020/05/amazon-rds-data-api-and-query-editor-available-additional-regions/

    【讨论】:

    • MySQL Workbench 也不能使用
    • 这很好用,但它不允许例如 mysqldump。
    【解决方案8】:

    您应该使用可以访问您的 dbinstance 的 EC2 实例。
    此 EC2 实例应为 ssh 打开端口 22。
    现在使用从本地到 EC2 到数据库实例的端口转发。
    现在在您的工作台上输入主机名 127.0.0.1 和端口 <forwarded port>

    【讨论】:

      【解决方案9】:

      Aurora serverless 没有公共端点可以从任何 ide 连接,例如 MYSQL Workbench、Sequel pro 等。但是我们可以通过 cli 连接,方法是在 aurora serverless 所在的同一 vpc 中启动一个实例。

      此外,您还可以查看 cloud9 和 aws cloud ide。这又只是 ec2,但也将具有 UI,并且可以与团队和许多其他功能共享。

      【讨论】:

        【解决方案10】:
        • 我们不能直接从 MySQL Workbench 连接 Aurora Serverless,因为只有分配给 Aurora Serverless 的私有 IP,而不是公共 IP。

        • 我们可以从 EC2 连接 Aurora Serverless,但无法通过 Mysql Workbench SSH 隧道连接 Aurora Serverless。

        • 我们无法通过 ALB 连接 Aurora Serverless,因为 ALB 仅允许 HTTP 和 HTTPS 流量。 您可以从本地远程登录 ALB-RDS-DNS,但无法连接到 MySQL Workbench

        那么这里有什么解决办法;

        • 我们可以通过 NLB 连接 Aurora Serverless,因为 NLB 允许 TCP 协议上的流量;

        步骤 1:创建 NLB 并添加监听负载均衡器协议:TCP 和负载均衡器端口 :3306

        第2步:选择VPC(应该是Aurora Serverless Cluster的同一个VPC),并添加子网(公有)

        第 3 步:导航到配置路由,选择目标类型:IP 和协议:TCP,端口:3306

        第 4 步:使用 DNS Checker 获取 Aurora Serverless Cluster 的私有 IP,并将这些 IP 添加到端口 3306

        第 5 步:创建 NLB

        现在修改 Aurora Serverless Cluster 的安全组,允许来自 0.0.0.0(不推荐)或 VPC CIDR 的流量

        现在,转到 Mysql Workbench 并使用 NLB DNS 名称,并尝试使用 Aurora Serverless Cluster 的正确用户名和密码进行连接。

        【讨论】:

        • 很好用!这样做的一个潜在缺点可能是 NLB 的运行状况检查将阻止 Aurora 实例完全关闭(如果这是相关的)。
        • 第四步,如何获取我的极光无服务器集群的私有IP?
        • @FernandoSantiago 您可以执行nslookup ****.rds.amazonaws.com 并将所有 IPv4 地址添加到 NLB 目标组。
        【解决方案11】:

        要连接到 Aurora 无服务器或私有子网中的任何数据库,您需要一个“跳转主机”,它可以是公有子网中的任何 EC2 实例。

        按照以下步骤操作:

        1. 打开附加到数据库的安全组,并添加新规则如下:-

        类型:MYSQL/Aurora,协议:TCP,端口范围:3306,
        来源:securitygroupofEC2(您可以通过输入所有安全组 'sg-')

        1. 打开附加在EC2上的安全组,并打开22端口。如果没有,请添加如下新规则:-

        类型:SSH,协议:TCP,端口范围:22,来源:MY IP

        1. 打开工作台,点击新建连接
        - Standard TCP/IP over SSH
         - SSH Hostname : < your EC2 Public IP >  #34.3.3.1
         - SSH Username : < your username > #common ones are : ubuntu, ec2-user, admin
         - SSH KeyFile: < attach your EC2 .pem file>
        
         - MYSQL Hostname: <database endpoint name> #mydb.tbgvsblc6.eu-west-1.rds.amazonaws.com
        
         - MYSQL Port: 3306
         - Username : <database username>
         - Password: <database password>
        

        单击“测试连接”并完成!

        【讨论】:

        • 如果有一些疑问,视频教程也是如此。 youtube.com/watch?v=qI4hlUrAkAU
        • 这应该是公认的答案,可能是上面 Yoga 指出的 AWS 文档的链接。这样做可以让您快速启动并运行,特别是如果您的最终目标是开发项目。花更多时间编码,把管理员留给管理员... ;)
        【解决方案12】:

        我们已经在 vpc 公共子网中的一个 ec2 实例中安装了 softether vpn。我们从 linux/mac os/windows 连接了 softether vpn,如regualr vpn。之后,我们就可以从 mysql workbench、pgadmin 等工具访问所有私有资源,例如 aws aurora serverless,就像常规端点一样,甚至可以从本地计算机访问 django admin shell 命令。

        希望这会有所帮助。

        https://www.softether.org/4-docs/1-manual/2._SoftEther_VPN_Essential_Architecture/2.4_VPN_Server_Manager

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-09-10
          • 1970-01-01
          • 2019-06-15
          • 2023-02-08
          • 1970-01-01
          • 2015-09-13
          • 2020-01-23
          • 1970-01-01
          相关资源
          最近更新 更多