MySQL 5.7及以后版本,密码字段是 authentication_string
1、在/etc/my.cnf配置文件的[mysqld]服务器标签中加入skip-grant-tables配置
使用skip-grant-tables进入mysql服务器之后,可以不需要root密码,但是同时,不能做授权修改
2、重启mysql服务
/usr/local/mysql/support-files/mysql.server restart
3、连接mysql服务,修改密码
无密码进入,连接mysql,使用update语句,更新自己的root密码:
/usr/local/mysql57/bin/mysql
修改密码:
update mysql.user set authentication_string=password("复杂密码") where user='root' and host='localhost';
flush privileges;
在不加载grant - tables的情况下,grant 语句,alter user 语句,都将无法使用。
4、修改完密码,退出后,立刻去掉配置文件中的skip-grant-tables 选项,并重载配置文件
重载配置文件:
/usr/local/mysql/support-files/mysql.server reload
5、为防止其他用户修改mysql密码,可以对/etc/my.cnf文件做权限控制
chown mysql:mysql /etc/my.cnf
chmod 640 /etc/my.cnf