mysql -u root -h 127.0.0.1 为何会首先解析成 mysql -uroot -hlocalhost 呢?
-----------------------------------------
我创建了两个超级一户
root@localhost
[email protected]
创建完成后,我 select * from user ,可以看到两条记录生成了
这两个用户都是最高权限,惟一区别是密码不一样。我想测试分别登录,因为这毕竟是两个用户呀,所以一定可以分别按不同的密码登录的,但是测试结果却完全不同于我的想象。我用
mysql -uroot -h127.0.0.1 登录时,用 [email protected] 这个用户的密码竟然无法成功,必须要输入 root@localhost 的密码才能成功。我真的晕了,这是为什么呢?
为什么会把 [email protected]首先解析成 root@localhost呢?
[email protected]毕竟是一个独立的用户呀?

解决方案 »

  1.   

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

  2.   

    谢谢,我恍然大悟,原来是这么回事。
    用户名是 user@客户端
    可是 -h要指定的是服务器明白了。但是还有一点不解:
    root@localhost
    [email protected]
    是两个用户,前提进我已经建了两个(虽然没有意义,但我的目的是测试)
    那么我登录时,系统将我识别成哪个用户呢?因为这两个都表示的是本机登录的root,
    但是在user表中,密码不一样,登录验证时,系统匹配哪一个呢?
    根据我的测试 [email protected] 是不会匹配到的,这又是为什么呢?匹配的原则是什么呢?
      

  3.   

    首先,把思路搞清,系统判断你的账号和你已经建了什么账号无直接关系!是你的客户端发起TCP连接,然后连到服务器,这个时间服务器上把这个IP解析为 localhost, 这样你的登录账号就是 root@localhost