小墨の博客

梦想需要付诸行动,否则只能是梦

虚拟机中安装MySQL后本地可以登录,主机无法登录的解决方案

Navicat连接MySQL数据库出现如下错误:

2003 - Can't connect to MySQL server on '192.168.232.129' (10060 "Unknown error")

image.png

  1. 首先ping一下虚拟机的IP地址,确认能够ping通。排除虚拟机网络问题

    如果ping不通,则问题出在本地与虚拟机的网络中。可从虚拟机内网络配置,VMWare虚拟机设置以及虚拟机的宿主机配置问题三方面排除问题。

  2. 然后考虑是否是虚拟中系统防火墙导致。CentOS下使用以下代码查看系统防火墙是否打开:

  3. systemctl status firewalld.service

    如果防火墙为打开状态,关闭防火墙:

    systemctl stop firewalld.service

    关闭防火墙开机自启:

    systemctl disable firewalld.service

    此时,再次查看防火请状态,应该为关闭状态:

    image.png

  4. 再次尝试连接MySQL数据库,如果提示

    1130 - Host '192.168.232.1' is not allowed to connect to this MySQL server

    说明网络已经联通。同时说明当前数据库只允许本地登录。于是我们需要开放mysql数据库下root用户的外部登录。


    image.png

  5. 通过命令行登入数据库

  6. mysql -u root -p

    然后输入密码(密码无回显)

    image.png

  7. 然后查看user表中root的host字段

  8. select host, user from mysql.user;
    image.png
  9. 如果root对应host只有127.0.0.1::1localhost三个值,说明root用户当前在本地登录,无法远程登录。

  10. 授权root用户相应权限:

  11. 如果想允许用户root从任何主机连接到mysql服务器

    mysql>grant all privileges on *.* to 'root'@'%' identified by '【root用户密码】' with grant option; 
    mysql>flush privileges;

    如果想允许用户root从ip为192.168.1.6的主机连接到mysql服务器

    mysql>grant all privileges on *.* to 'root'@'192.168.1.6' identified by '【root用户密码】' with grant option; 
    mysql>flush privileges;

    如果想允许用户root从ip为192.168.1.6的主机连接到mysql服务器的dk数据库

    mysql>grant all privileges on dk.* to 'root'@'%' identified by '【root用户密码】' with grant option; 
    mysql>flush privileges;

此时就可以正常连接了。

张小弟之家

本文链接:
文章标题:

本站文章除注明转载/出处外,均为原创,若要转载请务必注明出处。转载后请将转载链接通过邮件告知我站,谢谢合作。本站邮箱:admin@only4.work

尊重他人劳动成果,共创和谐网络环境。点击版权声明查看本站相关条款。

    发表评论:

    搜索
    本文二维码
    标签列表
    站点信息
    • 文章总数:545
    • 页面总数:20
    • 分类总数:96
    • 标签总数:213
    • 评论总数:63
    • 浏览总数:285197

    | | |
    | |  Z-Blog PHP