背景
在本地主机上安装了Ubuntu20虚拟机,随后在虚拟机上安装了MySQL数据库,在虚拟机上访问一切正常。但是在本地主机上使用Navicat连接始终连接不上。
解决
1.MySQL账户默认访问权限
mysql默认是只能在本机上进行访问的,因此在安装好数据库之后,需要对账号进行授权,把需要进行远程登录的账号进行授权,命令如下:
> GRANT ALL PRIVILEGES ON . TO ‘用户名’@‘%’ IDENTIFIED BY ‘密码’ WITH GRANT OPTION;
> flush privileges;
执行完以上命令之后,通常就可以正常连接了。
2.MySQL配置文件
如果以上操作之后还是连接失败,则可能是配置文件的问题了。由于我是通过Ubuntu的apt工具安装的MySQL,因此我的配置文件实际上是在/etc/mysql/mysql.conf.d/目录下,在/etc/mysql/mysql.cnf文件中的实际内容如下:
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
找到真正的配置文件/etc/mysql/mysql.conf.d/mysql.cnf ,修改其中的bind-address 配置为0.0.0.0 ,修改完成之后使用service mysql restart 重启MySQL服务使配置生效。 为了验证配置是否生效,使用sudo netstat -lntp | grep 3306 命令查看: 可以看到3306端口前面已经变成了0.0.0.0 ,原来是127.0.0.1 ,此时再次尝试连接。
3.虚拟机网络配置
以上方法都尝试过了,发现还是不行,通过ifconfig 查看虚拟机IP,发现和平时的192的本地IP不一致,感觉可能是虚拟机的网络出了问题,于是去虚拟机上查看网络配置,发现网络配置的是共享模式(NAT模式),通常我们都是配置的桥接模式,因此改到桥接模式,再通过ifconfig查看IP,发现IP就是192的正常本地IP了,再次尝试连接,问题解决。
共享/NAT模式:虚拟机不能与宿主机进行通信,但是虚拟机可以访问互联网。 桥接模式:虚拟机可以与宿主机进行通信(通常适配器会默认将虚拟机IP与宿主机IP设置到同一网段,如果不能通信则可以手动进行配置),虚拟机也可以访问互联网。 主机模式:虚拟机可以与宿主机通信,但虚拟机不可以访问互联网。
|