标签: root

  • MySQL root 密码丢失重置

    前几周百度云同步时把重要文件误删,包括 mysql root 密码。

    MySQL root 密码丢失,需要以类似 mysqld_safe –skip-grant-tables 方式运行,才能让 mysql -uroot 顺利执行,登录到 mysql 命令行。

    如果 mysql 在运行,先将 mysql 运行方式记录下来

    > ps aux | grep mysql
    // 假设当前 mysql 运行命令如下,实际参数可能更复杂
    /mysql/bin/mysqld --pid-file=/mysql/mysql.pid --socket=/tmp/mysql.sock
    

    1. 关闭 mysql 进程

    不要使用 kill 命令直接结束,而是通过 stop 参数结束 mysql 进程。

    // 假设 mysql 启动命令是
    // /etc/init.d/mysql start
    // 则应该通过如下方式结束 mysql 进程
    > /etc/init.d/mysql stop
    

    2. 以 –skip-grant-tables 方式启动 mysql

    在原有 mysql 运行命令基础上加上 –skip-grant-tables &,& 表示放入当前会话 background。

    /mysql/bin/mysqld --pid-file=/mysql/mysql.pid --socket=/tmp/mysql.sock --skip-grant-tables &
    

    3. 登录 mysql 修改 root 密码

    > mysql -uroot
    > update mysql.user set password=PASSWORD('MysqlRoot') where user='root';
    

    4. 参考第 1 步,结束 mysql 进程

    5. 执行原有 mysql 启动命令

    // 假设 mysql 启动命令如下
    > /etc/init.d/mysql start
    

    使用 root 新密码登录 mysql

    > mysql -uroot -p
    Enter password: 
    

    密码重置完成。

    重置过程有两点需要注意:

    1. 不推荐使用 kill 结束 mysql 进程;
    2. 以 –skip-grant-tables 方式运行 mysql 需要保留原有参数