主机无法连接虚拟机上的mysql

昨天在虚拟机上搭建web项目环境时,想在主机上使用navicat访问虚拟机上的mysql数据库,报错大概是“hostxxx is not allowed to this mysql server”

于是就检查防火墙,是关闭的,检查网络模式,是桥接模式,虚拟机也能和主机ping通。。。emmm那怎么办呢

参看之前项目的安装文档,发现自己遗漏了这么两句配置:

cmd进入mysql,输入:

GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

(这表示赋予任何主机访问数据的权限,其中*.*表示可以访问mysql server上的任意数据库(全局权限),如果替换成a.*,即表示可以访问mysql server上的a数据库啦(表权限);

其中%可以替换为具体的ip地址,如192.168.12.80,表示赋予该主机访问虚拟机mysql server的权限)

再输入:

FLUSH   PRIVILEGES;

(这表示刷新MySQL的系统权限相关表,如果授权之后不加这条命令,上面的授权就无法立即生效,除非重启mysql server


这里还有一些补充问题,例如:flush privileges这条命令什么情况下需要执行;赋予权限之后如何撤回权限;

在博客园发现了一位大佬总结的相关解释:https://www.cnblogs.com/gaosf/p/11189090.html

实践发现:

1、赋予全局权限后,命令是立即生效的,接下来创建的连接都可以使用新的权限,因此不需要再执行FLUSH   PRIVILEGES;

2、取消权限:revoke all privileges on *.* from 'username'@'%';

     1)如果是新建的连接,可以看到因权限不足产生的临时库

    2)如果是已存在的连接,取消授权后,访问数据库中的表,会报错:


2019/10/8

防火墙未关闭的报错

暂时的解决办法:

service iptables stop  关闭防火墙,设置后即时生效,重启后会复原

查看防火墙状态 service iptables status

永久的解决方法:

chkconfig iptables off 关闭防火墙,设置后重启生效,重启后不复原

原文地址:https://www.cnblogs.com/Ternura-1023/p/11434947.html