忘密码这种事,常有的事~~o( ̄▽ ̄)ゞ)) ̄▽ ̄)o
不过我至少设置的密码复杂性还可以~以至于我每次都不可能猜对…..
修改密码
MySQL 的“root”用户默认状态是没有密码的,目前稍微新一点的版本首次启动都是将密码打印在日志文件中,可以使用 grep 'temporary password' /var/log/mysqld.log
查看。
如果您想为 MySQL 中的“root”用户设置密码,请在控制台中使用“mysqladmin”命令。例如:
mysqladmin.exe -u root password 123456
另外,如果是先前有密码,则修改命令为:
mysqladmin.exe -u root -p password 123456
回车后提示你输入当前密码,确认后会被修改为新密码
Linux 可以尝试在
ls /usr/bin/mysql*
下寻找
重置密码
因为我用的是 centOS,所以我使用第一种方法成功重置了,其他的没测试
安全模式重置法
基本的思路是,以安全模式启动mysql,这样不需要密码可以直接以root身份登录,然后重设密码。
首先,我们停掉MySQL服务:service mysql stop
上面的命令适用于Ubuntu和Debian。CentOS、Fedora和RHEL下使用mysqld替换mysql。
以安全模式启动MySQL:mysqld_safe --skip-grant-tables --skip-networking &
注意我们加了--skip-networking
,避免远程无密码登录 MySQL。
这样我们就可以直接用root登录,无需密码:mysql -u root
接着重设密码:
1 | use mysql; |
注意,命令后需要加分号。
重设完毕后,我们退出(quit 或者 exit),然后启动 MySQL 服务:
重启服务:service mysql restart
同样,以上命令适用于Ubuntu和Debian,Centos、Fedora和RHEL需要用mysqld替换mysql。
现在可以尝试用新密码登录了:mysql -u root -pmynewpassword
注意,
-p
和密码间不能有空格。
推荐使用mysql -u root -p
然后回车再输密码
高版本重置
我测试 MySQL8 版本中,mysqld_safe 这个命令已经不存在了,从 stackoverflow 找到了一种可行方案:
1 | 1. Stop mysql: |
我还遇到的其他问题:
密码过于简单?新版加密规则 Nav 不认?外网用户无法连接?
1 | 显示密码验证参数 |
安装过程参考另一篇。
win下安全模式重置
首先也是先停掉服务:net stop mysql
然后cd进入mysql的安装目录下的bin目录执行:mysqld.exe --skip-grant-tables
然后再打开一个命令行,登陆mysql,这时候密码是空了接着重设密码:
1 | use mysql; |
然后进任务管理器结束所有mysql的服务进程,再打开下mysql服务即可
其他方案
在Ubuntu和Debian系统上,有一个debian-sys-maint
用户,Debian类系统下一些系统脚本对mysql的操作是通过这个用户完成的。所以我们可以通过这个用户来修改 root 密码。该用户的密码可以在/etc/mysql/debian.cnf
下找到
登陆后执行sudo mysql -u debian-sys-maint -p
重置即可
评论框加载失败,无法访问 Disqus
你可能需要魔法上网~~