修改 root 用户可以不在本地的时候登录
mysql> use mysql; Database changed mysql> select host,user from user; +-----------+------+ | host | user | +-----------+------+ | 127.0.0.1 | root | | ::1 | root | | localhost | root | +-----------+------+ 3 rows in set (0.00 sec) mysql> update user set host='%' where user='root'; ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY' mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> exit; Bye
以上步骤完成之后,遇到个问题就是:
在本地的时候mysql -uroot回车
,回车后居然就可以直接登录了
反而不能通过密码登录了:
C:\wamp\mysql\bin>mysql -uroot -p Enter password: ********* ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) C:\wamp\mysql\bin>
这是为什么?
localhost不在%里
mysql -uroot -h127.0.0.1 -p
和
mysql -uroot -p
相当于用2个用户登录
update user set host='%' where user='root';
而且你这样更改,相当于把上面3条记录都修改了,所以系统提示你"ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'错误了,因为Host,User字段是复合主键不唯一。
所以,LZ执行这条语句,其实是不成功的。所以从这一步往下都不用看了。