在ubuntu系统中,使用apt-get安装MySQL5.7后,此时root密码是空的,可以使用如下两种SQL语句修改密码。
方式一:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'PWD';
mysql> flush privileges;
方式二:
mysql> UPDATE mysql.user SET authentication_string=PASSWORD('PWD') WHERE user='root' AND host='localhost';
mysql> flush privileges;
注意: 在mysql5.7中,字段password已经被authentication_string代替。
修改完成后,不使用密码仍可以正常登录,修改没生效,出现这种情况,是因为"auth_socket"
这个认证插件惹的祸。
安装MySQL5.7后,如果没有为root用户提供密码,它将使用auth_socket插件。该插件只检查用户是否使用UNIX套接字进行连接,然后比较用户名,不关心也不需要密码。
如果要配置密码,需要同时更改插件并设置密码,SQL语句如下所示:
方式一:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'PWD';
mysql> flush privileges;
方式二:
mysql> UPDATE mysql.user SET plugin='mysql_native_password', authentication_string=PASSWORD('PWD') WHERE user='root' AND host='localhost';
mysql> flush privileges;