MYSQL 问题

连接mysql注意事项:报错access denied for user root...    

    起因是我通过本机连接本机数据库,数据库IP不是配置的127.0.0.1,而是配置的本机IP192.168.0.170.于是出现了以上错误

    后来才知道原因。

    我的mysql默认有四种连接:

           root@::1

           root@127.0.0.1

           root@localhost

           sa@%

 

1、使用root账户

root@::1表示远程连接,如果要连接非本机的数据库,那么数据库应该设置此项

因此如果要使用远程连接这里应该改成 root@192.168.0.170 或者 root@%,第二种

表示任意远程IP都可以连接此数据库!

 

如果是连接本机数据库,则应配置IP为127.0.0.1或localhost都可以

 

2、使用sa账户

 

      若设置是“ sa@%”则表明使用sa账户时IP连接不限制

 

3、使用navicat操作时报错提示:

[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

网上很多人说要取消 sql_mode 中的 only_full_group_by 参数,其实这并不是完全正确的,具体可以看这里,不能访问外网的话,我贴一点截图在下面:

 

 

 

 

 

 

因此,从上面可以知道,这个报错,虽然取消 only_full_group_by 模式能解决问题,但是有时候并不能治标,因为sql语句本身就有问题了,这相当于掩盖了问题而已。所以要根据实际情况而定。再仔细看一下报错,我们可以发现,我们的报错指向的数据是:

'information_schema.PROFILING.SEQ' 

这是一张mysql的系统表!!!

而文中的报错段是:

'test.web_log.user_id'

这明显是用户自己的表,是用户在写sql语句时跟现在的配置不匹配导致了出错!!!这种情况要修改自己的sql语句(治本!!!)或者取消 only_full_group_by 模式(但治标不治本...)

而我的报错是前者,所以我们并不需要取消 only_full_group_by 模式,也不需要修改sql语句,是因为navicat的bug导致的,直接登录linux服务器,在linux上使用命令行操作sql语句,发现不再报错了,当然也可以使用其它类似navicat功能的软件。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值