最近碰见过几次 MySQL root 密码修改无效的情况, 在此做一下总结.
修改 root@localhost 密码后并且 flush privileges; 发现密码未变更, 这种情况一般有三种可能.
使用 skip grant tables 启动 MySQL 导致, MySQL 启动后不启动 grant-tables, 一般用于 root 密码忘记修改, 修改完 root 密码后, 去掉该参数重启即可应用修改后的密码.
存在 root@'%'的用户, 导致 MySQL -uroot -p 登录使用的是 root@'%'的密码, 同时修改所有 root 用户密码, 一般建议安装完成后初始化 user 表中非 root 及 host 不为 localhost 的用户, 不建议新建 root@'%'的远程用户, 建议使用其他命名
root 用户只有一个, 但是 MySQL.user 表中 plugin 使用的并不是 mysql_native_password 而是 auth_socket, 导致用户连接一直使用 unix socket 空密码进入. 修改 plugin 改回 mysql_native_password, 然后重新修改 root 密码并刷新全权限即可.
来源: http://www.bubuko.com/infodetail-3002513.html