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 表中看了,两用户密码确实不一样。
为何我新建一个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 表中看了,两用户密码确实不一样。
你把localhost那条记录删除,再重启mysql,就得用127.0.0.1那个密码来登录了。
但是我不明白,用
mysql -uroot -h127.0.0.1
是可以登录的,而且查看host确实是 127.0.0.1
-h就是对应着 user 表的 host 字段吧!!!
不是。
你直接 mysql -uroot 试试,或者 mysql -uroot -h localhost
来验证一下你的想法。
host表中,host字段中已经有127.0.0.1这个记录呀?
为何会优先解析成
mysql -uroot -h localhost 呢?
-h, --host=name Connect to host.是你要连的主机名,比如你有一个msyql数据库在 db.csdn.com , 那你就mysql -u root -h db.csdn.com ,这和你自己的机器一点关系都没有,你的登录账号还是 root@yourPCname
如果你本机地址为 11.123.234.12 ,然后你用命令 mysql -uroot -h db.cctv.com 你连是是哪个数据库?你的账号是什么?
MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
这个确实有点古怪。不过,我估计mysql的实现,是试图解析127.0.0.1,得到统一的localhost主机名,然后按照@localhost来处理用户名。 咱们就当这是特例吧。