mysql root 127.0.0.1_本地windows 修改mysql 的root密码无效,论 127.0.0.1与 localhost,搞明白所有方式...

先说我遇到的问题:

有个项目中使用了127.0.0.1来连接本地的数据库,现在要设置本地数据库的密码。于是通过cmd 窗口使用命令:

#mysql -uroot -p // 已经知道原来是不设密码的,这里可以登录

mysql>update mysql.user set password=password(‘mypassword’) where user=’root’;

mysql>flush privileges;

mysql>quit;

密码修改好了,但项目中使用上面的密码后还是连接不上。 通过cmd 窗口使用命令 ,使用修改后的密码倒是可以。

后来弄明白了。

解决:

MySQL有三种登录命令:

(1)#mysql -uroot -p

(2)#mysql -uroot -p -h localhost

(3)#mysql -uroot -p -h 127.0.0.1

见MySQL的mysql.user 表:

778afe810c724c5736322f8ab8948ca8.png

都是root 用户,登录途径不同,有各自不同的password 。

既让明白了原理,这就来修改:

先通过已知方式登录:

#mysql-uroot -p

修改密码:

grant all on*.* to root@'%' identified by 'mypassword'with grant option;

grant all on*.* to root@'127.0.0.1' identified by 'mypassword'with grant option;

grant all on*.* to root@'localhost' identified by 'mypassword'with grant option;

flush privileges;

补充一:

这三种路径不同,深究一下:

842fca2b9e8dfabfa03071ac35dcb7c4.png

证明了(1)#mysql -uroot -p  与 (2)#mysql -uroot -p -h localhost   是相同的,而与(3)是不同的。

补充二:

localhost与127.0.0.1的区别是什么?

相信有人会说是本地ip,曾有人说,用127.0.0.1比localhost好,可以减少一次解析。

看来这个问题还有人不清楚,其实这两者是有区别的。

localhost也叫local ,正确的解释是:本地服务器

127.0.0.1在windows等系统的正确解释是:本机地址(本机服务器)

他们的解析通过本机的host文件,windows自动将localhost解析为127.0.0.1

localhot(local)是不经网卡传输!这点很重要,它不受网络防火墙和网卡相关的的限制。

127.0.0.1是通过网卡传输,依赖网卡,并受到网络防火墙和网卡相关的限制。

一般设置程序时本地服务用localhost是最好的,localhost不会解析成ip,也不会占用网卡、网络资源。

有时候用localhost可以,但用127.0.0.1就不可以的情况就是在于此。猜想localhost访问时,系统带的本机当前用户的权限去访问,而用ip的时候,等于本机是通过网络再去访问本机,可能涉及到网络用户的权限。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值