一、考虑 防火墙 问题
centos 有两种防火墙 FirewallD 和 iptables 防火墙。
centos7 使用的是 FirewallD 防火墙。
1. 首先需要检查防火墙是否打开?
执行命令: systemctl status firewalld.service; #查看防火墙运行状态
2. 此时你需要考虑,你的服务器 是否需要在开启防火墙的同时开放mysql的3306端口?
解决方案一、实现开启防火墙的同时开放mysql的3306端口
第一步:执行命令-编辑文件
vim /etc/sysconfig/iptables; # 需要编辑这个文件
第二步:在该文件中末尾添加
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
第三步:保存并退出
先按键盘左上角的exc
再执行命令::wq!
最后一步:执行命令-重启防火墙
firewall-cmd --reload; # 重启防火墙
解决方案二、实现关闭防火墙并禁止防火墙自启动
第一步:执行命令
systemctl stop firewalld.service; # 关闭防火墙
最后一步:执行命令
systemctl disable firewalld.service; # 禁止防火墙自启动
执行完这一步就可以尝试是否可以连接成功啦!
如果不行的话就继续执行下面的步骤
附. 防火墙相关命令:
systemctl status firewalld.service; #查看防火墙状态
systemctl stop firewalld.service; #关闭防火墙
systemctl start firewalld.service; #开启防火墙
firewall-cmd --reload; #防火墙重启
systemctl disable firewalld.service; #禁止防火墙自启动
systemctl enable firewalld.service; #防火墙随系统开启启动
二、考虑 mysql中用户访问权限 问题
注:因为mysql中可以限制每个用户的访问ip,一般默认为localhost(即此用户只能服务器本地登录)。有些时候会因为此问题导致无法链接!
解决方案:进入mysql修改指定用户的访问ip
第一步:执行命令-登录mysql
mysql -u账号 -p密码; # 服务器中登录mysql,账号密码都是登录mysql用的
第二步:执行命令-进入mysql库
use mysql; # 进入mysql库
第三步:执行命令-修改数据
update user set host='访问ip' where user='root'; # 更新指定用户的指定访问ip
这条命令中的 访问ip 可替换的参数如下:
访问ip替换为% # 代表不对此用户做访问ip限制
访问ip替换为 localhost 或者 指定ip #代表只能本地访问或者指定ip访问
第四步:执行命令-刷新访问权限
FLUSH PRIVILEGES; #执行命令-刷新访问权限
第五步:执行命令-退出mysql
exit
最后一步:执行命令-重启mysql数据库
systemctl restart mysqld.service; # 重启mysql数据库
附. mysql服务相关命令(如果mysql采用压缩包方式部署,以下代码则不可用)
systemctl stop mysqld.service; #停止mysql服务
systemctl start mysqld.service; #启动mysql服务
systemctl restart mysqld.service; #重启mysql服务
systemctl status mysqld.service; #查看mysql运行状态
whereis mysql; #查看mysql安装路径
三、考虑服务器的ip地址自动变更问题
注:这种情况一般不会发生,但是每次当出现这种问题的时候仍需要关注一下
执行命令: ip addr; #用于查看ip地址相关信息的命令