美文网首页MySQL(Mariadb)数据库
忘记mysql(mariadb) root密码解决方法

忘记mysql(mariadb) root密码解决方法

作者: 老猫烧须 | 来源:发表于2021-08-15 23:47 被阅读0次

    前言

    作为一个开发,在mysql(mariadb)数据库中,我几乎不会用数据库的root帐号来折腾项目的数据库,一般是一个数据库帐号对应一个项目或者一个系列的项目,看实际需求。root帐号仅仅作为一个分配管理的角色存在。既然数据库的root用的少,那么会忘记密码的概率就很大。
    当然我以前也遇过直接给root帐号用于生产环境的公司;这种给我感觉是放出root帐号用来跑项目,只能说心真大,前者存在被删库跑路的风险,后者存在被rm -rf /的风险。(运维管理能力不一定是开发必备能力,但是如果拥有这个能力是加分项吧,今天不讨论这个话题)



    文章基于:

    1. Linux系统下部署的mariadb。
    2. 要有sudo(root)权限,为了方便,下面所有执行的指令已经在sudo su下执行。
    3. 服务的启动/停止使用systemctl

    环境描述:

    1. OS:Ubuntu 20.04 LTS
    2. mariadb:10.3.31

    1. 停止所有mysql服务

    systemctl stop mysql.service
    

    可以ps或者在htop看一下是否已经关闭。

    2. 通过mysqld_safe启动数据库

    mysqld_safe --defaults-file=my.cnf --skip-grant-tables &
    

    网络上面有的说是修改my.cnf文件,但是后面又要改回来,特别麻烦,倒不如直接通过--skip-grant-tables参数启动。

    3. 进入数据库

    通过

    mysql -u root
    

    进入数据库,此时数据库没有验证流程,可以直接进入。

    4. 修改root密码

    /*选择`mysql`配置的数据库*/
    use mysql;
    
    /*修改root密码为:123*/
    UPDATE user SET password=PASSWORD('123') WHERE user='root';
    
    /*刷新权限,可以不执行这句*/
    FLUSH PRIVILEGES;
    

    第一句use mysql;选择mysql配置的数据库;
    第二句修改root密码,因为mysql用户的密码是密文存储的,因此使用PASSWORD(...)方法来加密(方法是大写);其中上面语句修改密码为123,大家可以自行设定自己的密码。
    第三句是刷新权限,可以不执行,反正都要重启数据库(现在用safe模式启动的)。

    5. 关闭安全模式,重启mysql

    通过htop或者pkill关闭与mysql相关的进程,以停止安全模式。

    systemctl start mysql.service
    


    后话

    上面的方法属于硬刚mariadb的配置库的user表,虽然说这样做不安全,为了改个密码,偶尔这样巴萨卡一下是ok的。
    如果是mysql 8.0以上(非mariadb),据说是不能这样硬刚的,没有实际测试,可以参考:https://www.cnblogs.com/ivictor/p/9243259.html

    相关文章

      网友评论

        本文标题:忘记mysql(mariadb) root密码解决方法

        本文链接:https://www.haomeiwen.com/subject/soupbltx.html