mysql-记录一次Navicat连接linux中mysql踩过的坑

一、场景描述


         在用navicat连接linux服务器端的mysql时,连接失败,所以网上查找各种资料,先给mysql授权,使所有ip都可以访问,下面是授权过程:

          1、进入mysql命令:mysql -uroot  -proot 

          2、进入mysql数据库:use mysql;

          3、授权:grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;       注意,后面那个root是我的密码,你的如果不是可能会略有不同。

          这些都做完,我利用navicat连接mysql还是连接不上,但是我ping 我的linux服务器地址是没问题的,telnet ip地址 端口号  也是没问题的,这个问题就很奇怪。

二、分析原因


           于是我网上查找资料开始分析问题,首先查看mysql数据库中的user表,看看里面的host(端口)和user(root用户)是不是开放正确,下面的查询过程。

    mysql> select user,host from user;
    +---------------+--------------+
    | user          | host         |
    +---------------+--------------+
    | root          | %            |
    | root          | *            |
    | root          | 192.168.39.1 |
    | mysql.session | localhost    |
    | mysql.sys     | localhost    |
    | root          | localhost    |
    +---------------+--------------+
    6 rows in set (0.00 sec)

         注意:select user,host from mysql.user;这个查询语句是在mysql数据库中的,首先要sue mysql;否则会报错。

        通过查询端口号和用户,我发现我的用户和端口号很神奇,网上大部分人的用户对应的端口号都是    root   %,还有一些乱七八糟的用户对应端口,就是没有 (root    *)这个组合,

查找资料了解到,( root   %)组合中的% 是代表所有的ip都可以访问root用户,但是(root    *)这个组合网上没见过

于是我猜测可能是我在授权的时候,输入错误多授权了一次,因此产生了错误,它分辨不清楚。

三、解决方式


         上面分析到可能是用户分配问题,于是我删除(root    *)这个组合,下面是删除过程

    mysql> drop user 'root'@'*';
    Query OK, 0 rows affected (0.01 sec)

    mysql> select t.host,t.user from user t;
    ERROR 1046 (3D000): No database selected
    mysql> select host,user from user;
    ERROR 1046 (3D000): No database selected
    mysql> use mysql;
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A

    Database changed
    mysql> select host,user from user;
    +--------------+---------------+
    | host         | user          |
    +--------------+---------------+
    | %            | root          |
    | 192.168.39.1 | root          |
    | localhost    | mysql.session |
    | localhost    | mysql.sys     |
    | localhost    | root          |
    +--------------+---------------+
    5 rows in set (0.00 sec)

    mysql> 

           注意:drop user 'root'@'*';这个是删除用户的命令,我删除之后再次查看,确实没有了(root    *)这个组合。

           这个时候我再次用navicat连接mysql,发现连接成功,问题解决。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值