失败的原因主要有以下几点:
PS:接着往下看前先确保 主机 与 虚拟机中的 centos7 能互相ping同;检查用户名密码端口之类的低级错误等
1.mysql的用户没有授权(主要看user表中的host和user字段的值)
- 对于mysql数据库没有授权,只需要用一条命令就可以了。
- mysql>GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘123456’ WITH GRANT OPTION;
- 指点ip:%代表所有Ip,此处也可以输入Ip来指定Ip
- 输入后使修改生效还需要下面的语句
- mysql>FLUSH PRIVILEGES;
2.服务器防火墙没有开放3306端口
-
centos 有两种防火墙 FirewallD和iptables防火墙
-
centos7 使用的是FirewallD防火墙。
-
开启 firewalld
systemctl start firewalld -
查看 firewalld 状态
systemctl status firewalld -
开放端口
// --permanent 永久生效,没有此参数重启后失效
firewall-cmd --zone=public --add-port=3306/tcp --permanent
或者命令
firewall-cmd --add-service=ftp --permanent
permanent表示永久开放,除去后就是暂时开放
例如:firewall-cmd --add-port=3306/tcp -
重新载入
firewall-cmd --reload -
查看
firewall-cmd --zone=public --query-port=80/tcp -
删除
firewall-cmd --zone=public --remove-port=80/tcp --permanent
firewalld简介
firewalld是centos7的一大特性,最大的好处有两个:支持动态更新,不用重启服务;第二个就是加入了防火墙的“zone”概念
firewalld默认配置文件有两个:/usr/lib/firewalld/ (系统配置,尽量不要修改)和 /etc/firewalld/ (用户配置地址)
zone概念:
硬件防火墙默认一般有三个区,firewalld引入这一概念系统默认存在以下区域(根据文档自己理解,如果有误请指正):
drop:默认丢弃所有包
block:拒绝所有外部连接,允许内部发起的连接
public:指定外部连接可以进入
external:这个不太明白,功能上和上面相同,允许指定的外部连接
dmz:和硬件防火墙一样,受限制的公共连接可以进入
work:工作区,概念和workgoup一样,也是指定的外部连接允许
home:类似家庭组
internal:信任所有连接
对防火墙不算太熟悉,还没想明白public、external、dmz、work、home从功能上都需要自定义允许连接