匿名用户
1级
2015-01-29 回答
因为你localhost 后面对应的密码是空,所以不输入密码也可以,解决方法:
1. 删掉localhost
2. 单独给localhost设置密码
追问:
感谢感谢,我又想了一下,
如果用localhost访问,就执行第三条的规则,必须密码为空才能登陆,那么我用root登录为什么就不行呢?
C:\Windows\System32>mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
追答:
1. root登录对应的是前两条记录,如:127.0.0.1还有::1
2. localhost是没有用户名,没有密码的
在命令行里面没有写-h的话默认的是localhost
所以你用root登录的话,他会自动来这个user表匹配host,pwd,user的,没有找到匹配的所以提示登录拒绝
如果你添加一条记录
localhost root 空
这样root就可以登录了
追问:
嗯,我实验了一下
然后尝试root 无密码登录,还是不行
追答:
这是我的测试结果,没有问题啊,
这是数据
mysql> select host,user,password from user;
+-----------+------+-------------------------------------------+
| host | user | password |
+-----------+------+-------------------------------------------+
| localhost | root | |
| 127.0.0.1 | root | |
| ::1 | root | |
| localhost | | |
| % | cat | *FD98809C60DD51B6B380DB17B72F9A9E2FE1928F |
| localhost | cat | *FD98809C60DD51B6B380DB17B72F9A9E2FE1928F |
+-----------+------+-------------------------------------------+
6 rows in set (0.00 sec)
mysql>
这是测试结果
这两个都可以登录
mysql -hlocalhost
mysql -hlocalhost -uroot
你在试试,理论上是这样的,如果不行你去查查白皮书