无法远程访问AWS EC2实例上的MySql docker映像

无法远程访问AWS EC2实例上的MySql docker映像,mysql,amazon-web-services,docker,amazon-ec2,Mysql,Amazon Web Services,Docker,Amazon Ec2,我正在尝试在EC2实例上运行一个连接到mysql db的node/express API,但我已经在这方面坚持了好几个星期了,所以我希望能得到一些帮助 我在EC2实例上拉取了Mysql的docker映像,如下所示: sudo docker run--detach--env=“MYSQL\u ROOT\u PASSWORD=mypassword”MYSQL 我得到的回答是: [System][MY-010931][Server]/usr/sbin/mysqld:准备好连接了。版本:“8.0.22”

我正在尝试在EC2实例上运行一个连接到mysql db的node/express API,但我已经在这方面坚持了好几个星期了,所以我希望能得到一些帮助

我在EC2实例上拉取了Mysql的docker映像,如下所示:

sudo docker run--detach--env=“MYSQL\u ROOT\u PASSWORD=mypassword”MYSQL

我得到的回答是:

[System][MY-010931][Server]/usr/sbin/mysqld:准备好连接了。版本:“8.0.22”套接字:“/var/run/mysqld/mysqld.sock”端口:3306 MySQL社区服务器-GPL。

我还在AWS控制台的安全组中添加了TCP/port:3306

然后我尝试在Sequel Pro上连接到我的db,我的实例的IPv4作为主机,“root”作为用户名,端口3306,但没有工作

我是不是遗漏了什么


谢谢大家!

我建议您检查以下步骤:始终从内到外

  • DB是否允许从公共IP连接?请参阅主机中%的使用
  • 您是否在docker中发布端口3306
  • 您是否正在实例中发布端口3306
您可以通过使用telnet(
telnet主机3306
)来轻松测试它,或者使用nmap来发现打开的端口。始终从关闭点开始,一步一步地离开。 另外,用mysql客户端测试它也是一个好主意


同样在发布mysql管理端口之前,请检查由此产生的安全问题。您肯定会受到暴力攻击,因此,至少添加一个防火墙规则,限制仅访问您的IP地址或其他IP方法

ec2实例上的安全组是否允许端口3306上的传入连接?@Fizk是的,我添加了Mysql/Aurora、TCP protocole和3306 portOk类型的传入规则,太好了-你试过用-p3306:3306发布端口吗?@Fizk我刚试过,但还是不行,如果你用ssh连接到ec2实例,你能直接连接到数据库吗?“mysql-hlocalhost-uroot-p”并输入密码。
SELECT User, Host, Password FROM mysql.user;