当前位置: 首页 > 科技观察

不小心忘记了MySQL密码怎么办?

时间:2023-03-17 14:15:57 科技观察

本文转载自微信公众号《Java极客技术》,作者鸭血范。转载本文请联系Java极客技术公众号。一、问题背景很久以前,centos服务器上安装了mysql5.7数据库,但是已经很久没有使用了。里面有很多有价值的资料,可惜密码忘记了~~。这个时候就想有没有办法找回密码或者修改密码。于是,在网上找了一些解决方案,一般用得最多的是skip-grant-tables方案。废话不多说,直接开始!2、详细解决方案本例操作系统为centos7,mysql为5.7版本。不同版本的命令可能略有不同。网友可以根据系统版本查询相关命令。2.1.skip-grant-tables模式启动skip-grant-tables是指启动mysql时不启动授权表功能,可以不用密码直接登录#修改/etc/my.cnf文件vim/etc/my.cnf#在[mysqld]区添加配置,并保存my.cnf文件skip-grant-tables#重启mysqlsystemctlrestartmysqld#登录mysqlmysql-uroot-p#如果有密码输入,直接回车,即可进入数据库2.2,修改root密码#Loginmysql,此时还没有进入数据库,使用以下命令usemysql;#修改root密码(mysql5.7版本)updateusersetauthentication_string=password('password'),password_expired='N',password_last_changed=now()whereuser='root';#如果你的mysql是5.6版本,修改root密码(mysql5.6版本)updateusersetpassword=password('password')whereuser='root';#使flushprivileges生效;#exit退出;2.3、如果不想修改root密码,可以添加管理员用户添加管理员用户。操作如下:#登录mysql,此时你还没有进入数据库,使用如下命令usemysql;#刷新数据库flushprivileges;#创建用户并授予管理员权限grantallprivilegeson*.*to'user'@'%'identifiedby'password';#比如创建admin用户,密码为admingrantallprivilegeson*.*to'admin'@'%'identifiedby'admin';2.4、重启服务器以上操作完成后,其实还没有结束,需要关闭授权表功能,重启服务器#修改/etc/my.cnf文件vim/etc/my.cnf#删除并修改【mysqld】区域的配置,并保存my.cnf文件#skip-grant-tables#Restartmysqlsystemctlrestartmysqld#至此修改完成3.测试连接使用我们刚刚创建的admin用户进行测试登录#admin登录mysql-uadmin-p#输入密码admin,此时可以登录4.总结如果你也忘记了密码,可以用这个方法解决目前的问题重设密码的方法对mysql8无效。0版本!mysql8可以使用这个方法修改root密码:#在skip-grant-tables模式下,root密码留空updateusersetauthentication_string=''whereuser='root';#退出,去掉/etc/下的skip-grant-tablesmy.cnf文件,重启服务器#loginmysqlmysql-uroot-p#因为密码为空,直接回车,进入数据库后修改密码ALTERUSER'root'@'localhost'IDENTIFIEDBY'Hello@123456';#因为mysql8使用强校验,密码太简单会报错,密码越复杂越好!