1、 第一步定位问题,先进入服务器,尝试连接数据库,
- 可以连接成功,说明mysql服务没有问题。
2、排查数据库是否允许外部访问,查看用户访问数据库的权限
- 我登陆root 用户,% 说明允许所有ip访问,如果是localhost,说明外部主机无法访问,只有内部可以。
这个时候可以通过shell命令修改权限,
GRANT ALL PRIVILEGES ON *.* TO 用户名 @'%' IDENTIFIED BY 密码
3、如果还不行,很大可能是因为被防火墙拦截,通过命令查看防火墙中是否配置了该端口
- 看端口是否存在,不存在什么也不显示,需要添加
netstat -ntulp | grep 端口号
- 添加端口
//添加端口号到防火墙,想当于加了一个白名单
firewall-cmd --add-port=端口号/tcp --permanent(配置永久存在)
//重启防火墙(重点,修改文件以后一定重启)
firewall-cmd --reload
//查看端口状态
firewall-cmd --query-port=端口号/tcp
- yes 是开放状态,no是关闭状态
4、 如果端口已经存在,但是状态是NO这个时候我们可以选择移除端口,重新添加或者新增规则。
- 移除指定端口
firewall-cmd --permanent --remove-port=端口号/tcp
- 直接强行往防火墙插入一条规则,允许目标端口通过
iptables -I INPUT -p tcp --dport 端口号 -j ACCEPT
注:修改配置文件记得刷新!有不对的地方还望指正。