MySql 数据库密码修改及破解

一,破解线下数据库服务器的密码

具体操作如下:

  1. 修改主配置文件并重启数据库服务

  2. 无密码登录 并修改登录密码 断开连接

  3. 去掉对主配置文件的修改并重启数据库服务

  4. 使用破解后的密码登录

1 修改主配置文件并重启数据库服务
[root@host50 ~]# vim /etc/my.cnf
[mysqld]
skip-grant-tables  # 手动添加,作用连接服务不需要输入用户名和密码
[root@host50 ~]# systemctl  restart mysqld # 重启数据库服务

2 无密码登陆,并修改登陆密码
[root@host50 ~]# mysql  # 无密码直接登陆
mysql>use mysql; # 先进入mysql库中;主机,用户名和密码信息存放在mysql库中的user表中。
mysql> select host,user,authentication_string from mysql.user # 查看数据
库管理员root本机登录密码(密码是加密后保存的)

 # 主机名     #用户名      #密码(加密的密码)
+-----------+-----------+-------------------------------------------+
| host      | user      | authentication_string                     |
+-----------+-----------+-------------------------------------------+
| localhost | root      | *F19C699342FA5C91EBCF8E0182FB71470EB2AF30 |
| localhost | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
+-----------+-----------+-------------------------------------------+
2 rows in set (0.00 sec)

# Mysql服务使用自带的password()命令加密密码
# 修改管理员 root 本机登陆密码为 123qqq...A
mysql> update  mysql.user set authentication_string=password("123qqq...A")
 where user="root" and host="localhost";   # password("123qqq...A") 为密码加密

4 确保修改密码生效
mysql> flush privileges; 

5 断开连接
mysql> exit;  # 退出数据库

6 在主配置文件 my.cnf 中删除或注释掉开始添加的行
[root@host50 ~]# vim /etc/my.cnf  
[mysqld]
#skip-grant-tables  # 该行注释或删除

7 重启服务
[root@host50 ~]# systemctl  restart mysqld 


8 使用破解后的密码登陆
[root@host50 ~]# mysql -uroot -p123qqq...A
mysql>

 二 线上破解密码

这种方法,不需要重启数据库服务,工作中线上服务器是不能重启的

host50 主机上做实验,步骤如下:

  • 拷贝另一台管理员root 用户能正常登陆的数据库服务的 mysql 库,覆盖本机的 mysql 库。

  • 查看 mysqld 服务父进程的pid

  • 重新加载数据库目录下的文件

  • 使用破解后的密码登陆

# 拷贝 host51 主机上的 mysql 库,覆盖本机的 mysql 库。(文件覆盖即把 host51 主机上的密码覆盖到本机,其他数据不会改变)
[root@host50 ~]# scp -r 192.168.4.51:/var/lib/mysql/mysql  /var/lib/mysql/

# 用 pstree 命令查看 mysqld 服务的父进程的PID号,没有pstree命令的,安装 psmisc 软件
 [root@host50 ~]# pstree -p | grep mysqld | head  -1  # 查看mysqld服务的父进程
|-mysqld(1130)-+-{mysqld}(1318)

# 查看信号列表,此命令可以查看进程中的信号选项以及代码
[root@host50 ~]# kill -l    #(小写L)

# 服务运行状态下 重新加载数据库目录下的文件
[root@host50 ~]# kill  -SIGHUP  1130  # SIGHUP 信号可以重新加载mysqld服务的父进程,让 mysqld 服务识别数据库目录下的文件 ,1130 是父进程的 pid 号

# 登陆本机的数据库的密码,和 host51 主机上的 root 密码一样
[root@host50 ~]# mysql  -uroot -pNSD2022…a
MysqL>

三 修改 root 管理员的密码

为了数据库管理员 root 用户的密码的安全,可以定期修改密码

注意:修改密码,必须要知道旧密码,才能设置新密码且要符合密码策略的要求。

方法一:登录后修改,数据库管理员连接服务后,修改自己的登录密码

[root@host50 ~]# mysql -uroot -pNSD2022…a  # 登录
Mysql> alter user  root@”localhost” identified by “123qqq…A”;   # 修改密码
MySQL> exit; 

方法二:登录前修改,登录数据库连接服务前修改密码

以下两种方式修改密码

# 命令:mysqladmin -uroot -p旧密码 password "新密码"
[root@host50 ~]# mysqladmin  -uroot -p123qqq…A   password   "NSD2022…a"  # 登录数据库前修改密码

# 隐藏旧密码和新密码,根据提示输入密码
# 命令: mysqladmin -uroot -p password
[root@host50 ~]# mysqladmin  -uroot  -p  password
Enter password: 输入旧密码 NSD2022…a
New password: 输入新密码 123qqq…A

四,依据日志中的原始密码修改

初始密码是刚安装mysql服务时自动生成的,刚配置启动mysql服务时,可以根据原始密码进行修改密码,当修改过密码后,还会自动生成一个初始密码,忘记密码的情况下,也可以根据这个初始密码,进行修改密码

1,查看连接服务初始密码

说明:初始密码是随即生成的,每台机器都不一样

[root@host50 ~]# grep  password  /var/log/mysqld.log 
2022-10-28T02:16:33.724854Z 1 [Note] A temporary password is generated for root@localhost: AelBFZ-eo2Qf

2,使用初始密码连接服务

说明:初始密码里会有一些特殊符号,有些符号在命令行下是有特殊功能的,为了使其成为普通字母,要用单引号将密码引起来

# 使用初始密码登录
[root@host50 ~]# mysql -uroot -p'AelBFZ-eo2Qf'

3,修改登陆密码

说明:强制修改登陆密码且密码要符合复杂度要求

# 修改密码为 123qqq...A
mysql>  alter user   root@"localhost" identified by "新密码";
mysql>  exit; 断开连接

# 使用修改后的密码登录
[root@host50 ~]# mysql -uroot -p'123qqq...A'
mysql> show databases;  # 查看已有的库

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

你可能感兴趣的:(数据库,mysql,服务器)