线下(没有被网站访问过的)数据库服务器的破解方法
具体操作:
1 修改主配置文件并重启数据库服务
2 无密码登录 并修改登录密码 断开连接
3 去掉对主配置文件的修改并重启数据库服务
4 使用破解后的密码登录
修改主配置文件:
[root@host50 ~]# vim /etc/my.cnf
[mysqld]
#validate_password_policy=0
#validate_password_length=6
Skip_grant_tables #作用连接服务不需要输入用户名和密码
:wq
[root@host50 ~]# systemctl restart mysqld
无密码登录,并修改登陆密码,断开连接
[root@host50 ~]# mysql
mysql> desc mysql.user; 查看存放密码的表头名
查看数据库管理员root本机登录密码(密码是加密保存的)
mysql> select user , host , authentication_string from mysql.user
where user=”root” and host=”localhost”;
用户名 主机名 密码
+-----------+-----------+-------------------------------------------+
| user | host | authentication_string |
+-----------+-----------+-------------------------------------------+
| root | localhost | *F19C699342FA5C91EBCF8E0182FB71470EB2AF30 |
+-----------+-----------+-------------------------------------------+
2 rows in set (0.00 sec)
密码是使用mysql服务自带的password()命令加密的
mysql> select password("123456"); 把明文123456 加密
+-------------------------------------------+
| password("123456") |
+-------------------------------------------+
| *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-------------------------------------------+
1 row in set, 1 warning (0.00 sec)
#修改管理员root 本机登陆密码为 123qqq...A
mysql> update mysql.user set authentication_string=password("123qqq...A")
where user="root" and host="localhost";
#确保修改生效
mysql> flush privileges;
mysql> exit; 断开连接
去掉对主配置文件的修改并重启数据库服务
[root@host50 ~]# vim /etc/my.cnf
[mysqld]
validate_password_policy=0
validate_password_length=6
#skip-grant-tables
:wq
[root@host50 ~]# systemctl restart mysqld 重启服务
使用恢复的密码登陆
[root@host50 ~]# mysql -uroot -p123qqq...A
线上数据库服务器的破解方法(不需要重启数据库服务,适合工作环境)具体步骤如下:
1 拷贝管理员root用户能正常连接服务的数据库服务器的mysql库, 覆盖本机的mysql库
2 查看本机mysql服务 父进程的pid
3 重新加载数据库目录下的文件
4 使用破解后的密码登录
拷贝Host51的mysql库 覆盖本机的mysql库
[root@host50 ~]# scp -r 192.168.4.51:/var/lib/mysql/mysql /var/lib/mysql/
没有pstree命令的话 安装 psmisc软件
pstree是树形结构去查看进程的PID号
安装psmisc这个软件才有pstree这个命令
[root@host50 ~]# which pstree || yum -y install psmisc #发现没有psmisc这个软件去安装,如果有就不安装
查看本机mysqld服务的父进程的PID号
[root@host50 ~]# pstree -p | grep mysqld | head -1
|-mysqld(1130)-+-{mysqld}(1318)
查看所有信号列表
[root@host50 ~]# kill -l (小写L)
重新加载数据库目录下的文件
给当前50上的mysql进程发一个信号,发一个SIGHUP的信号,
这个作用就是:
让这个进程对应的服务重新加载一下数据库下的目录文件。
加载的好处是什么?
就是让它认识一下51的用户名的密码。
[root@host50 ~]# kill -SIGHUP 1130
登录本机的数据库的密码和Host51的root密码一样
[root@host50 ~]# mysql -hlocalhost -uroot -pNSD2022...a
修改root密码
为了数据库管理员root用户密码的安全,可以定期修改密码
注意:修改密码 必须要知道旧密码 才能设置新密码
并且要符合密码策略的要求
登陆后修改
数据库管理员连接服务后 修改自己的登陆密码
[root@host50 ~]# mysql -uroot -Pnsd2022…a
mysql> alter user root@”localhost” identified by “123456”;
mysql> exit;
登陆前修改
操作系统管理员 修改本机数据库服务管理员登陆密码
[root@host50 ~]# mysqladmin -uroot -p旧密码 password “新密码”
[root@host50 ~]# mysqladmin -uroot -p123456 password "654321"