Ubuntu 系统修改root密码后,无需密码亦可登录

问题描述: Ubuntu 系统修改root密码后,无需密码亦可登录
操作系统: Ubuntu
MySQL版本:5.7
MySQL 账号 root@'localhost' 无法修改密码,即使修改了密码, mysql.user 中authentication_string 列也为空。
并且登录时候空密码,或者任意输入密码也能登录。

问题排查:
(1)排查一:
skip-grant-tables 参数没有使用。

(2)排查二:
SELECT `host`,`user`,`plugin` FROM mysql.user WHERE `user`='root' AND `host`='localhost';
返回结果为: auth_socket 

结果分析:
关于密码验证插件 auth_socket:
1.这种验证方式不要求输入密码,即使输入了密码也不验证。
2.只能用 UNIX 的 socket 方式登陆,只能本地登陆。
3.操作系统的用户和 MySQL 数据库的用户名必须一致,例如你要登陆 MySQL 的 root 用户,必须用操作系统的 root 用户登陆。

解决办法:
需要将该值修改为 mysql.user WHERE `user`='root' AND `host`='localhost' 中的 `plugin` 列修改为:  'mysql_native_password' 

执行语句:
use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Jimstars';
flush privileges;