MySQL 忘密码

五一假期的一个惊喜: 自己电脑上的 MySQL 密码忘了!

没错,就是这么惊喜……

总不至于让我重装系统吧?还能咋地啊?

Ubuntu/Debian 特解

在 Ubuntu 和 Debian 系统上,有一个 debian-sys-maint 用户(你隐藏得好深……),Debian 类系统下一些系统脚本对 mysql 的操作是通过这个用户完成的。所以我们可以通过这个用户来修改 root 密码。

首先,获取此用户的密码。

sudo cat /etc/mysql/debian.cnf

我们可以看到

[mysql_upgrade]
host     = localhost
user     = debian-sys-maint
password = YOUR_PASSWORD_HERE
socket   = /var/run/mysqld/mysqld.sock

楞着干啥?记下来啊!

之后,使用该用户进行登录

mysql -u debian-sys-maint -p

最后改密码。

其他系统通解

首先,将 MySQL 服务停止掉。

然后,使用 sudo mysqld_safe --skip-grant-tables --skip-networking 在安全模式下启动服务。如果不想新开一个窗口的话,可以最后加一个& 让它在后台运行。

最后,使用 mysql -uroot -p,密码为空进行登录,改密码。

如果启动 MySQL 出现错误,提示某某文件不存在,需要再做下面的事情:

sudo mkdir -p /var/run/mysqld
sudo chown mysql:mysql /var/run/mysqld

修改密码

set password for DBUSER@HOST = password('YOUR_PASSWORD_HERE');

或者

GRANT USAGE ON *.* TO DBUSER@HOST IDENTIFIED BY 'YOUR_PASSWORD_HERE';

将里面的 DBUSER、HOST、YOUR_PASSWORD_HERE 替换一下就好了。

最后

总结一下我为什么会忘了密码: 自己笔记本,开发环境,密码长度 40 位。

怪我喽?

留下评论