MySQL5.7 修改密码不生效问题
0x00 问题:
在Ubuntu系统中,使用apt-get安装mysql-server 5.7后,mysql root密码为空,直接使用mysql -uroot
即可登录,可以使用如下语句修改密码:
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;
注意: 在mysql 5.7中,字段password已经被authentication_string替代;
修改完root密码后,不使用密码仍然可以正常登录。phpMyAdmin登录提示错误#1698无法登录mysql服务器
;
0x01 解决方法:
经排查发现是auth_socket
这个认证插件惹的祸;
安装Mysql5.7后,默认使用auth_socket插件,只检查用户是否使用UNIX套接字连接和用户名,不需要密码;
如果要配置密码,需要同时更改auth_socket
插件的密码,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;
设置以后问题解决!!