zoukankan      html  css  js  c++  java
  • 本地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 表:

      都是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;

    补充一:

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

      证明了(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的时候,等于本机是通过网络再去访问本机,可能涉及到网络用户的权限。

  • 相关阅读:
    WDK中出现的特殊代码
    敏捷是怎样炼成的
    推荐一个非常好玩的falsh游戏
    软件安全技术
    J2EE的昨天,今天,明天
    Java打印程序设计
    关于父亲
    xml发展历史和用途
    CRM与ERP整合的六个切入点
    SEO(搜索引擎最佳化)简介
  • 原文地址:https://www.cnblogs.com/mobaids/p/11484783.html
Copyright © 2011-2022 走看看