虚拟机中centos7安装mysql后,用主机连接mysql 失败的那些坑

失败的原因主要有以下几点:

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从功能上都需要自定义允许连接

你可能感兴趣的:(java)