问题
使用mysql5.7.x
时,忘了root
密码,又没有保存好root密码时,会无法使用root
账户管理mysql
。
百度上找到的传统方法,在mysql5.7.x
版本上用不了
原因
主要有两点:
mysqld_safe
已经被废弃,rpm安装包默认不会安装mysqld_safe
user
表中password
列已经更改为authentication_string
解决方法
在经过多次试验之后终于解决了root
登录问题。解决步骤如下
停止
mysqld
的服务,并使用特殊参数重启
$ sudo systemctl stop mysqld.service
$ sudo systemctl set-environment MYSQLD_OPTS="--user=mysql --skip-grant-tables --skip-networking"
$ sudo systemctl start mysqld.service
使用
root
用户重新登录,此时是不需要输入密码的
mysql -u root mysql
### 修改root账户的密码为新密码,并更新
mysql > UPDATE mysql.user SET authentication_string=PASSWORD("abcdef") WHERE user='root' and host='localhost';
mysql > flush privileges;
mysql > quit
重置
mysqld
服务的参数,并重启
$ sudo systemctl unset-environment MYSQLD_OPTS
$ sudo systemctl restart mysqld.service