AWS Aurora MySQL无服务器:如何从MySQL Workbench连接

时间:2018-08-06 22:37:42

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

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

我做了什么:

  1. 从AWS控制台管理中,我选择RDS>实例> Aurora>无服务器
  2. 保留默认设置
  3. 创建数据库
  4. AWS仅创建一个AWS集群 enter image description here
  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。

关于安全组: enter image description here

11 个答案:

答案 0 :(得分:6)

  

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

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

答案 1 :(得分:5)

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

  
      
  • 您不能为Aurora无服务器数据库群集提供公共IP地址。
  •   
  • 您只能从以下位置访问Aurora无服务器数据库集群:   基于Amazon VPC服务的虚拟私有云(VPC)。
  •   
  • 您无法通过以下方式访问Aurora无服务器数据库集群的终结点:   AWS VPN连接或区域间VPC对等连接。那里   通过以下方式访问集群端点的限制   区域内VPC对等连接;有关更多信息,请参见   Amazon VPC用户中的接口VPC终端节点(AWS PrivateLink)   指南。但是,您可以访问Aurora无服务器群集的   通过AWS Direct Connect连接的终端节点。
  •   

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

答案 2 :(得分:2)

  • 我们无法直接从 MySQL Workbench 连接 Aurora Serverless,因为只有分配给 Aurora Serverless 的私有 IP,而不是公共 IP。

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

  • 我们无法通过 ALB 连接 Aurora Serverless,因为 ALB 仅允许 HTTP 和 HTTPS 流量。 您可以从本地 telnet 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 的正确用户名和密码进行连接。

答案 3 :(得分:1)

最初,我陷入了同样的情况 连接AWS RDS Aurora时要注意的点

  • 不能连接Public,您需要一个具有与创建Aurora相同区域的EC2实例。

  • Aurora Public access应该被选中否(对我有用)。

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

Ex:类型= MYSQL / AURORA,协议= TCP,PortRange = 3306,源=自定义和您的IP地址范围,

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

  • 在创建Aurora时,您将创建MasterName,Pwd和默认架构以进行连接。

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

答案 4 :(得分:1)

用于连接到Aurora Serverless的数据API和查询编辑器现在在更多区域中可用。

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

答案 5 :(得分:1)

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

答案 6 :(得分:1)

Aurora无服务器没有公共端点可以从任何想法(如MYSQL工作台,Sequel pro等)进行连接。但是,我们可以通过在Aurora无服务器所在的同一vpc中启动一个实例来通过cli连接。

此外,您还可以检出cloud9和AWS Cloud IDE。反过来,这仅是ec2,但还将具有UI,并且可以与团队和许多其他功能共享。

答案 7 :(得分:1)

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

按照以下步骤操作:

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

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

  1. 打开连接到EC2的安全组,并打开22端口。如果没有,请添加如下新规则:-
<块引用>

类型:SSH,协议:TCP,端口范围:22,来源:我的 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>

点击“测试连接”,大功告成!!

答案 8 :(得分:0)

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

  1. 解析无服务器数据库的DNS,并获取其IP
  2. 在VPC中创建一个ALB,并为您在#1中找到的IP提供一个目标组
  3. 创建一个新的安全组并将其附加到您的ALB
  4. 更新SG,以允许从任何位置入站。如果要公共Internet访问,则允许从所有IP入站,在VPC中启用Internet网关,并为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

答案 9 :(得分:0)

这可以通过使用haproxy来实现

在Centos上安装Haproxy-> yum install haproxy

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

全局 用户代理 组haproxy

默认 重试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->服务haproxy start

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

答案 10 :(得分:-4)

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

摘自官方文档:

  

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

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

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

  •   

有关更多信息,请参见此处:

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