进行站点迁移时很悲剧地发现VPS上MySQL的root密码忘记了,本文记录找回密码的过程。本文命令适配MySQL5.7,不过原理是通用的。
停止MySQL进程并以安全模式启动MySQL:
# 停止MySQL进程
sudo /etc/init.d/mysql stop
# 为避免【mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists】错误,准备运行时目录
sudo mkdir -p /var/run/mysqld
sudo chown mysql:mysql /var/run/mysqld
# 以安全模式启动MySQL
sudo mysqld_safe --skip-grant-tables &
# 登陆MySQL
mysql -uroot
运行以下MySQL语句更改密码:
# 登陆后即可更改密码,这里以新密码为root123示例
# MySQL 5.7版本后,密码字段被更改为authentication_string
mysql>use mysql;
mysql>update user set authentication_string=password('root123') where user='root';
# 如果碰到【ERROR 1524 (HY000): Plugin 'auth_socket' is not loaded】错误,则执行以下两句:
mysql>update user set plugin="mysql_native_password" where User='root';
mysql>flush privileges;
# 退出
mysql>quit;
重新开启MySQL:
# 关闭MySQL进程
sudo /etc/init.d/mysql stop
# 上面命令可能无法停止mysql_safe进程,因此额外运行:
sudo killall mysqld
# 启动MySQL进程
sudo /etc/init.d/mysql start
# 登陆
mysql -uroot -proot123
参考资料
-- EOF --
本文最后修改于6年前 (2019-06-04)