MySQL root用户密码丢失找回4 min read

  • A+
所属分类:MySQL

  

1. 首先停止mysql 

单实例:

  1. /etc/init.d/mysqld stop  

多实例:

  1. [root@db01 /]# ps -ef|grep 3306       // 找到进程号,将其杀掉,如果能stop则最好不用kill  
  2. root  22701 10 13:45 pts/0    00:00:00 /bin/sh /mysql/bin/mysqld_safe --defaults-file=/data/3306/my.cnf  
  3. mysql   23423  22701  0 13:45 pts/0  -------------内容省略-------  
  4. [root@db01 /]# kill 23423  
  5. [root@db01 /]# ps -ef|grep 3306  

  

2. 使用 —skip-grant-tables 启动 mysql 并登录,忽略授权登录验证。 

单实例:

  1. [root@db01 /]# mysqld_safe --skip-grant-tables --user=mysql &      
  2. [root@db01 /]# mysql        // 登录时空密码  
  3. // 说明:在启动时加--skip-grant-tables参数,表示忽略授权表验证  

多实例:

  1. // 如下命令启动mysql  
  2. [root@db01 /]# mysqld_safe --defaults-file=/data/3306/my.cnf --skip-grant-tables >/dev/null 2>&1 &  
  3. [root@db01 3306]# ss -lntup|grep 3306             // 查看是否启动成功  
  4. [root@db01 /]# mysql -S /data/3306/mysql.sock    // 启动成功后就可以不用密码登录咯!!!  
  5. mysql>  

   

3. 在数据库中修改密码  

单实例/多实例

  1. mysql> UPDATE mysql.user SET password=PASSWORD("123456") WHERE user='root' and host='localhost';    // 将密码修改为123456  
  2. Query OK, 0 rows affected (0.00 sec)  
  3. Rows matched: 1  Changed: 0Warnings: 0  
  4.    
  5. mysql> flush privileges;       // 刷新数据库表  
  6. Query OK, 0 rows affected (0.00 sec)  

    

4. 退出使用新密码重新登录 

单实例

  1. mysql> quit         // 退出  
  2. Bye  
  3. [root@db01 /]# mysql -uroot -p123456   // 重新登录  
  4. mysql>               // 成功!!!  

多实例

  1. mysql> quit        // 退出  
  2. Bye  
  3. [root@db01 /]# mysql -uroot -p123456 -S /data/3306/mysql.sock   // 重新登录  
  4. mysql>             // 成功!!!  

  

5. 最后重启一下(以下以单实例重启说明),当通过以上修改密码后,使用ps命令查看进程时 --skip-grant-table 参数还存在,所以要将刚改密的数据库重启没具体操作如下:

  1. [root@db01 /]# ps -ef|grep 3306       // 当前存在--skip-grant-table参数  
  2. root      24051  163330 15:56 pts/0    00:00:00 /bin/sh /mysql/bin/mysqld_safe --defaults-file=/data/3306/my.cnf --skip-grant-table  
  3. mysql     24788  240510 15:56 pts/0    00:00:00 /mysql-5.5.49/bin/mysqld --defaults-file=/data/3306/my.cnf --basedir=/application/mysql --datadir=/data/3306/data --plugin-dir=/application/mysql/lib/plugin --user=mysql --skip-grant-table --log-error=/data/3306/mysql_oldboy3306.err --open-files-limit=1024 --pid-file=/data/3306/mysqld.pid --socket=/data/3306/mysql.sock --port=3306  
  4. root      24851  163330 16:13 pts/0    00:00:00 grep 3306  
  5.    
  6. [root@db01 /]# /data/3306/mysql stop    // 停掉  
  7. Stoping MySQL...  
  8. [root@db01 /]# /data/3306/mysql start   // 启动  
  9. Starting MySQL...  
  10.    
  11. [root@db01 /]# ps -ef|grep 3306      // 下面没有该参数,操作成功  
  12. root      24863      11 16:14 pts/0    00:00:00 /bin/sh /mysql/bin/mysqld_safe --defaults-file=/data/3306/my.cnf  
  13. mysql     25585  248631 16:14 pts/0    00:00:00 /mysql-5.5.49/bin/mysqld --defaults-file=/data/3306/my.cnf --basedir=/mysql --datadir=/data/3306/data --plugin-dir=/application/mysql/lib/plugin --user=mysql --log-error=/data/3306/mysql_oldboy3306.err --open-files-limit=1024 --pid-file=/data/3306/mysqld.pid --socket=/data/3306/mysql.sock --port=3306  
  14. root      2560416333  0 16:14 pts/0    00:00:00 grep 3306  

  

  

zhaoyulin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: