暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Mysql为啥突然登录失败

solargen 2021-05-31
2032

前言

最近在网上发布了一个开源简易的考试系统,试运行了几天都没有问题,突然有一天root用户无法登录到mysql了,由于项目也是使用的root用户登录,结果数据库链接提示用户名或者密码错误,项目垮掉。AXB,哪位大仙在坑我,故意改了我的root密码,头大,只有再改回来了。




简单几步搞定问题

  • 关闭MySQL服务

  • 免密登录启动MySQL

  • 免密登录重置密码

  • 登录mysql修改root密码





1、关闭MySQL服务

Linux:

    systemctl stop mysql80

    windows:

      net stop mysql80




      2、免密登录启动MySQL

        mysqld --console --skip-grant-tables --shared-memory

        如果你的服务器中有多个mysql或者你想指定mysql的配置文件,则添加--defaults-file

          mysqld --defaults-file="配置文件" --console --skip-grant-tables --shared-memory

          如果启动过程中有任何问题,通过--console参数可以清晰的在控制台上显示错误信息。




          3、免密登录重置密码


          重新打开命令行,之前的不要关,登录mysql

            mysql -uroot -P33306 -p

            通过-P参数指定mysql端口,默认是3306

            enter password的时候直接回车就可以登录到mysql中,再进行密码修改

              use mysql;
              update user set authentication_string='' where user='root';
              select user,authentication_string from mysql.user;

              这时候可以看到root的密码被重置了




              4、登录mysql修改root密码

              关闭之前免密启动的命令行,以正常服务的方式启动mysql

              Linux:

                systemctl start mysql80

                Windows:

                  net start mysql80

                  启动后重新登录mysql,此时mysql的root密码为空,登录后修改

                    alter user 'root'@'%' identified by '新密码;'
                    flush privileges;

                    到此为止,你就可以使用root的新密码登录mysql了




                    后记

                    所谓条条大路通罗马,方法总比困难多。解决问题的方式有很多种,这里只是其中一种,遇到任何问题可以留言反馈。

                    给大家填几个坑:

                    1、mysql的配置文件编码,如果为utf-8 bom注意改回utf-8否则服务启动失败

                    2、登录mysql使用-P(大P)指定端口号,如果你服务器中有多个mysql实例

                    3、mysql数据定期备份

                    4、项目中不要使用root操作数据,可以新建一个用户并授权

                    5、mysql端口不要使用3306

                    6、项目配置文件中mysql密码一定要加密处理,数据源配置密码解密,这样配置文件mysql免密就不是明文了

                    文章转载自solargen,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                    评论