如何连接mysql数据库(AWS下的RDS实例)

Posted

技术标签:

【中文标题】如何连接mysql数据库(AWS下的RDS实例)【英文标题】:How to connect to mysql database (RDS instance under AWS) from 【发布时间】:2021-10-06 12:27:10 【问题描述】:

我在 AWS 控制台中为 mysql 数据库创建了 RDS 实例。 我设法使用 .env 文件中的参数连接到我的 laravel 8 应用程序:

DB_CONNECTION=mysql
DB_HOST=myrdsinstance.rds.amazonaws.com
DB_PORT=3306
DB_DATABASE=tads
DB_USERNAME=app_admin_name
DB_PASSWORD=app_admin_password

我尝试从 MySQL Workbench 连接到该数据库。 创建 RDS 实例我设置参数 公共访问设置为“是”以确保安全 - 我想我可以使用它连接到 MySQL Workbench。

在 MySQL Workbench 中的“Under Remote Managent”选项卡上:

在我输入的主机名字段中:myrdsinstance.rds.amazonaws.com 在 我输入的用户名字段:app_admin_name 在我输入的密码字段中 :app_admin_password 在我选择的 SSH 密钥路径字段中:pem 的路径 我用于在控制台中访问我的 aws 实例的文件

但我得到了错误: 错误 [Errno 13] 权限被拒绝:'/home/user/.ssh/config'

在我的 ubuntu 控制台中,我运行:

sudo chmod  777  /home/user/.ssh/config
sudo systemctl restart ssh.service

但我得到了下一个错误:

SSH Connection Failed.
Check you SSH Connection settings and whether the SSH server is up.
Error : timed out

出了什么问题,如何解决?

修改块: 在 MySQL Workbench 中,我禁用了“远程管理”选项卡,在那里我尝试使用 ssh 和

在我选择的“连接”选项卡上

Connection Method :“Standart(TCP/IP)” In hostname field I entered :
    myrdsinstance.rds.amazonaws.com  In port field I entered : 3306 In
    usernmne field I entered : app_admin_name In password field I
    entered : app_admin_password

在控制台中的安全组下,我添加了带有入站规则的新组:https://prnt.sc/1hxsfhq

但在 MySQL Workbench 中出现错误:

Failed to Connect to MySQL at myrdsinstance.rds.amazonaws.com:3306 
with user tads_admin
Can't connect to MySQL server on 'myrdsinstance.rds.amazonaws.com' (110)

谢谢!

【问题讨论】:

您正在尝试通过 SSH 连接到 Amazon RDS 数据库?这是不支持的。如果您想从自己的计算机连接到 Amazon RDS 数据库,请设置 Publicly Accessible=Yes,在安全组中添加一条入站规则,以允许您的 IP 地址访问端口 3306 并正常连接。 请看 MODIFIED BLOCK 【参考方案1】:

检查事项:

数据库在公共子网中启动(定义为具有指向 Internet 网关的路由表条目) 数据库配置为Public Access = Yes 安全组允许从您的 IP 地址对端口 3306 进行入站访问 通过其端点名称连接到数据库

这应该足以对数据库进行网络访问。

如果您的连接尝试在失败之前需要几秒钟,则表明存在网络问题。如果上述所有要求都正确,则从不同的网络重试(例如办公室与家庭与通过手机连接)。请注意,每个连接的 IP 地址都会发生变化。

您也可以临时配置安全组以允许来自 0.0.0.0/0 的访问,以确保 IP 地址不会导致问题。

【讨论】:

似乎我以类似的方式制作,但您提到的 DNS 名称是什么?不是我写的 myrdsinstance 名称?在我的实例下,我有几个参数,例如公共 IPv4 地址私有 IPv4 地址公共 IPv4 DNS 弹性 IP 地址私有 IPv4 DNS VPC ID 是的,尝试连接在 15-20 秒内暂停我的工作台...... 抱歉 -- 控制台中的措辞是 端点名称。您是否尝试从不同的网络连接?您是否尝试在安全组中临时使用0.0.0.0/0?您确认它在公共子网中吗? 如果到主机名字段设置 myrdsinstance.rds.amazonaws.com 并在相关的安全组中设置源自定义“0.0.0.0/0”(你叫公共子网吗?)在工作台我得到错误无论如何:无法使用用户 tads_admin 在 myrdsinstance.rds.amazonaws.com:3306 连接到 MySQL我填写的所有参数都在 1ts“连接”选项卡中 确定数据库在公共子网中吗?您可以尝试从不同的网络(例如家庭、办公室和电话连接)吗?否则就是个谜!如果您订阅了 AWS Support,您可以询问他们。 请问公共子网是什么?

以上是关于如何连接mysql数据库(AWS下的RDS实例)的主要内容,如果未能解决你的问题,请参考以下文章

连接到 Mysql AWS RDS 实例时工作台错误 10060

如何修复AWS DMS到RDS的连接错误?

使用 Flask-SQLAlchemy 连接到 AWS RDS MySQL 数据库实例

AWS RDS 是不是支持 MySQL 作为文档存储

如果AWS RDS恢复发生,如何重新连接

在意外删除 AWS RDS 二进制日志后恢复 Debezium MySQL 连接器