【MySQL】mysql root密码忘记怎么办?

MySQL忘记密码了怎么解决

笔者曾经有一次误删了mysqlroot用户,怎么办?

之前的解决方式是通过忽略授权表的方式重启mysql然后插入相关数据解决该问题的,但是这种方式需要重启mysql,会影响现有业务,那么有没有其他方式可以不重启MySQL就解决呢?

因为mysql的user表示MyISAM引擎的,因此我们可以通过修改对应的文件来解决这个问题。下面是本人在测试环境的一次演练,仅供参考。

一、查看现有用户

04:18:34 [email protected] [mysql]>select user,host from user;
+---------------+-----------+
| user          | host      |
+---------------+-----------+
| mysql.session | localhost |
| mysql.sys     | localhost |
| root          | localhost |
+---------------+-----------+
3 rows in set (0,00 sec)

二、删除本地root用户

04:18:59 [email protected] [mysql]>drop user [email protected]‘localhost‘;

三、再次查看用户

04:20:02 [email protected] [mysql]>select user,host from user;
+---------------+-----------+
| user          | host      |
+---------------+-----------+
| mysql.session | localhost |
| mysql.sys     | localhost |
+---------------+-----------+

现在我们开始恢复用户数据

四、移动user表相关文件

[[email protected] mysql]# cp user.* /vagrant/mysql/3307/data/test/

五、登录另一个实例并查看user表

04:23:53 [email protected] [(none)]>use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
04:23:56 [email protected] [test]>show tables;
+----------------+
| Tables_in_test |
+----------------+
| user           |
+----------------+
1 row in set (0,00 sec)

04:23:58 [email protected] [test]>select * from user\G
*************************** 1. row ***************************
                  Host: localhost
                  User: mysql.session
           Select_priv: N
           Insert_priv: N
           Update_priv: N
           Delete_priv: N
           Create_priv: N
             Drop_priv: N
           Reload_priv: N
         Shutdown_priv: N
          Process_priv: N
             File_priv: N
            Grant_priv: N
       References_priv: N
            Index_priv: N
            Alter_priv: N
          Show_db_priv: N
            Super_priv: Y
 Create_tmp_table_priv: N
      Lock_tables_priv: N
          Execute_priv: N
       Repl_slave_priv: N
      Repl_client_priv: N
      Create_view_priv: N
        Show_view_priv: N
   Create_routine_priv: N
    Alter_routine_priv: N
      Create_user_priv: N
            Event_priv: N
          Trigger_priv: N
Create_tablespace_priv: N
              ssl_type:
            ssl_cipher:
           x509_issuer:
          x509_subject:
         max_questions: 0
           max_updates: 0
       max_connections: 0
  max_user_connections: 0
                plugin: mysql_native_password
 authentication_string: *C7A1AAE2D250AFD864050FAF4935EF6F5D185A92
      password_expired: N
 password_last_changed: 2018-02-23 13:19:12
     password_lifetime: NULL
        account_locked: Y
*************************** 2. row ***************************
                  Host: localhost
                  User: mysql.sys
           Select_priv: N
           Insert_priv: N
           Update_priv: N
           Delete_priv: N
           Create_priv: N
             Drop_priv: N
           Reload_priv: N
         Shutdown_priv: N
          Process_priv: N
             File_priv: N
            Grant_priv: N
       References_priv: N
            Index_priv: N
            Alter_priv: N
          Show_db_priv: N
            Super_priv: N
 Create_tmp_table_priv: N
      Lock_tables_priv: N
          Execute_priv: N
       Repl_slave_priv: N
      Repl_client_priv: N
      Create_view_priv: N
        Show_view_priv: N
   Create_routine_priv: N
    Alter_routine_priv: N
      Create_user_priv: N
            Event_priv: N
          Trigger_priv: N
Create_tablespace_priv: N
              ssl_type:
            ssl_cipher:
           x509_issuer:
          x509_subject:
         max_questions: 0
           max_updates: 0
       max_connections: 0
  max_user_connections: 0
                plugin: mysql_native_password
 authentication_string: *C7A1AAE2D250AFD864050FAF4935EF6F5D185A92
      password_expired: N
 password_last_changed: 2018-02-23 13:19:26
     password_lifetime: NULL
        account_locked: Y
2 rows in set (0,00 sec)

六、把本实例的root用户插入刚刚移动过来的user表

04:25:03 [email protected] [test]>insert into user select * from mysql.user where user = ‘root‘ and host =‘localhost‘;
Query OK, 1 row affected (0,02 sec)
Records: 1  Duplicates: 0  Warnings: 0

七、再次移动user文件到原先的位置

[[email protected] test]# cp user.* /vagrant/mysql/3306/data/mysql

八、重新加载配置到内存

[[email protected] test]# kill -HUP `pidof mysqld`

通过该步mysql并不会重启,对应用不会有影响

九、重新登录,OK

[[email protected] test]# mysql -uroot -p -S /tmp/mysql3306.sock
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 5.7.21-log MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.

04:30:57 [email protected] [(none)]>

原文地址:http://blog.51cto.com/12823054/2073708

时间: 2024-10-12 03:35:33

【MySQL】mysql root密码忘记怎么办?的相关文章

Mysql的Root密码忘记,查看或修改的解决方法

Mysql的Root密码忘记,查看或修改的解决方法:1.首先启动命令行2.在命令行运行:taskkill /f /im mysqld-nt.exe3.继续在命令行运行:mysqld-nt --skip-grant-tables4.新开一个命令行运行:mysql -u root (如果没有配置mysql的bin环境变量的话需要切换到bin目录下执行此语句) 如果不想改密码,只是想看原来的密码的话.可以在命令行执行这个语句 select host,user,password from mysql.u

MySQL的root密码忘记后重置方法

如果忘记了MySQL的root密码怎么办? 我们默认的情况下是没有给MySQL设置密码的,如下 默认的登录MySQL [[email protected] ~]# mysql -uroot Welcome to the MySQL monitor.  Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.1.40-log MySQL Community Server (GPL) Type 'help;

linux下mysql的root密码忘记,怎么改root密码

在公司生产环境里,由于服务器的mysql的root密码一直是开发掌握,一直于最后在改某个库时必须用root权限,无奈开发最后跟我说了一句,密码太复杂,我也忘记了.我只能默默的回头,转身离开,但是心中,只有五个字'死你的妈哟'.root密码都TM得忘记了,开发个毛啊. 回到运维控制台我开始想怎么改root密码,网上找了好多方法,在测试机器上试过了也不行,让我感到绝望,我想还是翻书好,最后在书上找到了答案,在这里分享一波. 第一步 改配置文件 每个人的配置文件路径不一样,我的配置文件路径在 /etc

***在Linux环境下mysql的root密码忘记解决方法(三种)-推荐第三种

MySQL密码的恢复方法之一 1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库. 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的 状态下,其他的用户也可以任意地登录和修改MySQL的信息.可以采用将MySQL对外的端口封闭,并且停止Apache以及所有的用户进程的方法实现服务器的准安全状态.最安全的状态是到服务器的Console上面操作,并且拔掉网线. 2.修改MySQL的登录设置: ? 1 # vi /etc/my.cnf 在[

linux下mysql的root密码忘记解决方

1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库. 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的 状态下,其他的用户也可以任意地登录和修改MySQL的信息.可以采用将MySQL对 外的端口封闭,并且停止Apache以及所有的用户进程的方法实现服务器的准安全 状态.最安全的状态是到服务器的Console上面操作,并且拔掉网线. 2.修改MySQL的登录设置: # vi /etc/my.cnf 在[mysqld]的段中加上一句:sk

linux下mysql的root密码忘记解决方法

1.首先确认服务器出于安全的状态,最安全的状态是到服务器的Console上面操作,并且拔掉网线. 2.修改MySQL的登录设置: # vim /etc/my.cnf 在[mysqld]的段中加上一句:skip-grant-tables 例如: [mysqld] skip-grant-tables 保存并且退出vim. 3.重新启动mysqld # /etc/init.d/mysqld restart Stopping MySQL: [ OK ] Starting MySQL: [ OK ] 4.

linux下mysql的root密码忘记办法

1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库. 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的 状态下,其他的用户也可以任意地登录和修改MySQL的信息.可以采用将MySQL对 外的端口封闭,并且停止Apache以及所有的用户进程的方法实现服务器的准安全 状态.最安全的状态是到服务器的Console上面操作,并且拔掉网线. 2.修改MySQL的登录设置: # vi /etc/my.cnf 在[mysqld]的段中加上一句:sk

linux下mysql的root密码忘记解决方案

1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库. 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的 状态下,其他的用户也可以任意地登录和修改MySQL的信息.可以采用将MySQL对 外的端口封闭,并且停止Apache以及所有的用户进程的方法实现服务器的准安全 状态.最安全的状态是到服务器的Console上面操作,并且拔掉网线. 2.修改MySQL的登录设置: # vi /etc/my.cnf 在[mysqld]的段中加上一句:sk

在Linux环境下mysql的root密码忘记解决方法

mysql版本不同,修改密码的方法大同小异,但是有一定的区别: mysql5.1 1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库. 2.修改MySQL的登录设置:# vi /etc/my.cnf在[mysqld]的段中加上一句:skip-grant-tables 保存并且退出 3.重新启动mysqld service mysqld restart 4.登录并修改MySQL的root密码 mysql> USE mysql ;mysql> UPDATE user SE

CentOS 7.2 MySQL的root密码忘记时重置方法

首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库. 因为在重新设置mysql的root密码的期间,MySQL数据库完全出于没有密码保护的状态下,其他的用户也可以任意地登录和修改MySQL的信息.可以采用将MySQL对外的端口封闭,并且停止Apache以及所有的用户进程的方法实现服务器的准安全状态. 修改MySQL的登录设置: 在[mysqld]的段中加上一句: skip-grant-tables vim /etc/my.cnf 加入skip-grant-tables 重新