前几周百度云同步时把重要文件误删,包括 mysql root 密码。
MySQL root 密码丢失,需要以类似 mysqld_safe –skip-grant-tables 方式运行,才能让 mysql -uroot 顺利执行,登录到 mysql 命令行。
如果 mysql 在运行,先将 mysql 运行方式记录下来
> ps aux | grep mysql // 假设当前 mysql 运行命令如下,实际参数可能更复杂 /mysql/bin/mysqld --pid-file=/mysql/mysql.pid --socket=/tmp/mysql.sock
1. 关闭 mysql 进程
不要使用 kill 命令直接结束,而是通过 stop 参数结束 mysql 进程。
// 假设 mysql 启动命令是 // /etc/init.d/mysql start // 则应该通过如下方式结束 mysql 进程 > /etc/init.d/mysql stop
2. 以 –skip-grant-tables 方式启动 mysql
在原有 mysql 运行命令基础上加上 –skip-grant-tables &,& 表示放入当前会话 background。
/mysql/bin/mysqld --pid-file=/mysql/mysql.pid --socket=/tmp/mysql.sock --skip-grant-tables &
3. 登录 mysql 修改 root 密码
> mysql -uroot > update mysql.user set password=PASSWORD('MysqlRoot') where user='root';
4. 参考第 1 步,结束 mysql 进程
5. 执行原有 mysql 启动命令
// 假设 mysql 启动命令如下 > /etc/init.d/mysql start
使用 root 新密码登录 mysql
> mysql -uroot -p Enter password:
密码重置完成。
重置过程有两点需要注意:
- 不推荐使用 kill 结束 mysql 进程;
- 以 –skip-grant-tables 方式运行 mysql 需要保留原有参数