忘记root密码的情况下, mysql 5.7.21 (有版本区别,老版本的修改密码部分有点不一样)
1. 停止mysql
sudo service mysql stop
# 用ps 命令检查一下 , 如下图则表示停止成功
ps -ef |grep mysql
2. safe模式启动mysql , 启动成功显示如下图
sudo mysqld_safe --skip-grant-tables
3. 新开窗口登陆mysql
# 提示输入密码时直接回车,(空密码)
mysql -u root -p
4. 修改密码
# 注意不是password , 新版本是 authentication_string , 是 authentication_string, 是 authentication_string
update mysql.user set authentication_string=password('新密码') where user='root' ;
5. 结束safe模式后重启mysql (结束不了时用kill -9 进程ID)
可能出现的错误
2018-04-03T09:54:20.978563Z mysqld_safe Logging to syslog.
2018-04-03T09:54:20.982271Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2018-04-03T09:54:20.986171Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
解决方法
mkdir -p /var/run/mysqld
chown mysql:mysql /var/run/mysqld