- 论坛徽章:
- 9
|
刚刚测试了一下:
mysql.user里有两条记录,如下
User: root
Host: localhost
Password: XXXXXXX
User:root
Host:127.0.0.1
Password: |
结果:
> mysql -uroot -hlocalhost -p
> mysql -uroot -h127.0.0.1 -p
都可以登陆,但是即使host指明为127.0.0.1也需要输入第一条记录中的密码才能登陆。
即:
> mysql -uroot -h127.0.0.1 不能登录 |
原因:
因为mysql在验证用户时先对user表进行排序:
1. specified的host排在pattern的host前面。
2. 相同host的条目,specified的user排在anonymous的前面。
3. 其他按默认存储顺序。
排序结束后,从第一条开始匹配,如果匹配符合则忽略剩下所有。 |
所以:
即使第二条记录的密码为空,从理论上来说无论什么情况下都无法匹配到(mysql认为localhost=127.0.0.1,所以总是存储靠前的那条记录起作用)。
当然如果为了安全,可以把这条记录删除,或者为他设置密码,但并不影响root在localhost上的登录。 |
|
|