阿里云ECS允许mysql外网访问

2019年双十一期间,趁搞活动期间,买了一台阿里云ECS云服务器,当时为了安全考虑,没有放开数据库的外网访问权限。直到后来,部署了应用后,发布应用时,尤其是数据库脚本:不允许外网访问实在不方便,于是今天决定放开数据库的外网访问权限。

于是,按照网上所说的步骤,依次将数据库user表中的root权限放开,然后在阿里云的控制台,添加网络安全策略。但是仍然无法访问。后来通过度娘发现一些问题线索,问题得到顺利解决。其中忽略了一个非常重要的问题:我的系统是centos,防火墙在阿里云上默认是打开的,所以我们需要打开防火墙或者将3306端口添加到防火墙规则中。

允许数据库用户外网访问

第一步,得确认所使用的数据库用户是否允许外网访问。例如root用户。
1、命令登录mysql
在这里插入图片描述
2、切换到mysql数据库
在这里插入图片描述
3、查看user表,确认root用户是否允许外网访问

阿里云ECS允许mysql外网访问_第1张图片
如果root用户对应的host为localhost,则需要修改权限。否则跳过以下步骤。
4、更新用户表
在这里插入图片描述
5、分配访问权限
在这里插入图片描述

5、强制权限更新
在这里插入图片描述
至此,mysql的外网访问权限已开通。

系统防火墙

首先,查看系统防火墙是否开启,如果没有开启,则跳过。
1、通过systemctl status firewalld查看firewalld状态,发现当前是dead状态,即防火墙未开启。
阿里云ECS允许mysql外网访问_第2张图片
active(running),说明防火墙正在运行。

2、执行firewall-cmd --permanent --zone=public --add-port=3306/tcp,将3306端口添加到防火墙的访问规则中。

3、重启防火墙(必须),否则规则不起作用。
在这里插入图片描述
至此,系统防火墙端口配置完成。

阿里云控制台

接下来,需要在阿里云的控制台上添加允许3306端口外网访问的规则。

登录阿里云后,依次找到,网络与安全–>安全组。
阿里云ECS允许mysql外网访问_第3张图片
然后,找到对应的实例,点击配置规则:
在这里插入图片描述
添加对应的规则:
阿里云ECS允许mysql外网访问_第4张图片
至此,阿里云规则配置完成,不需要重启实例。

后记

阿里云实例允许数据库外网访问,主要有以下几点需要确认:
1、数据库本身是否允许外网访问?
2、系统本身是否允许外部请求访问对应端口?
3、阿里云的安全规则是否允许?

你可能感兴趣的:(阿里云ECS允许mysql外网访问)