user表中,root用户的 host字段,localhost与127.0.0.1有区别吗?
为何我新建一个root用户,将host定为 127.0.0.1,并且设了与 localhost不同的密码,都成功了,
但是登录时,127.0.0.1对应的密码总是不认呢?还是认localhost对应的密码。比如 root@localhost的密码为 aaaa
     [email protected]的密码为 1234
用以下方式登录
mysql -uroot -h127.0.0.1 -p1234
进不去,用以下则可以
mysql -uroot -h127.0.0.1 -paaaa为什么单为 127.0.0.1设的密码无效呢?
注:我执行 flush privileges;
并重启动mysql了,
我到 user 表中看了,两用户密码确实不一样。

解决方案 »

  1.   

    localhost, 127.0.0.1最终都落到了localhost那条记录上去了。
    你把localhost那条记录删除,再重启mysql,就得用127.0.0.1那个密码来登录了。 
      

  2.   

    mysql -uroot -h127.0.0.1 -p1234-h 是指什么? 是你要连接的数据库的所在的主机,并不是说明你的客户端的IP。
      

  3.   

    谢,
    但是我不明白,用
    mysql -uroot -h127.0.0.1
    是可以登录的,而且查看host确实是 127.0.0.1
    -h就是对应着 user 表的 host 字段吧!!!
      

  4.   


    不是。
    你直接 mysql  -uroot 试试,或者  mysql -uroot -h localhost 
    来验证一下你的想法。
      

  5.   

    谢谢,经过测试,确实是这种情况,我不知,为什么,127.0.0.1 会按localhost来处理。
    host表中,host字段中已经有127.0.0.1这个记录呀?
      

  6.   

    mysql -uroot -h 127.0.0.1 
    为何会优先解析成
    mysql -uroot -h localhost 呢?
      

  7.   

    首先要搞清楚这个 -h 参数是什么。
     -h, --host=name     Connect to host.是你要连的主机名,比如你有一个msyql数据库在 db.csdn.com , 那你就mysql -u root -h db.csdn.com ,这和你自己的机器一点关系都没有,你的登录账号还是 root@yourPCname
      

  8.   

    或者楼主先回答这个问题!
    如果你本机地址为  11.123.234.12 ,然后你用命令 mysql -uroot -h db.cctv.com 你连是是哪个数据库?你的账号是什么?
    MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
      

  9.   


    这个确实有点古怪。不过,我估计mysql的实现,是试图解析127.0.0.1,得到统一的localhost主机名,然后按照@localhost来处理用户名。 咱们就当这是特例吧。