MySQL密码破解
1.破解密码一:
MySQL安装完成之后,系统会分配一个随机的密码
- 启动mysql
- 然后查找mysql初始密码;
- 这种方法设定的规则和规定都无法保存到配置文件;
#启动mysql
[root@node0 ~]# systemctl start mysqld.service
#查找mysql的初始密码
[root@node0 ~]# grep "password" /var/log/mysqld.log
2023-04-03T10:06:19.010137Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: uF,u5(itxke/
#登陆
[root@node0 ~]# mysql -uroot -p'uF,u5(itxke/'
......#看到这个字符界面就代表进入成功
mysql>
#然后先设定一个密码
mysql> alter user 'root'@'localhost' identified by "LJw!@#123";
Query OK, 0 rows affected (0.01 sec)
#设定密码规则
mysql> set global validate_password.policy=0;
mysql> set global validate_password.length=1;
Query OK, 0 rows affected (0.00 sec)
#设定自己喜欢的123456
mysql> alter user 'root'@'localhost' identified by "123456";
Query OK, 0 rows affected (0.01 sec)
2.破解密码二:
mysql的安装是带有一个安全机制的修改密码体制
- 使用命令来修改
#直接敲命令
[root@node0 ~]# mysql_secure_installation
...........
Enter password for user root: #输入当前root的密码
...........
Change the password for root ? ((Press y|Y for Yes, any other key for No) : y #是否确认修改密码
...............
New password: #输入自己喜欢的密码
Re-enter new password: #再次确认密码
................
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y #确认使用密码
............#是否删除匿名用户
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.
............#是否禁止root用户远程登录
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
..........#删除一些测试使用的表格
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
............#是否重新加载库
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
......
All done! #结束了
#使用新密码尝试登陆
[root@node0 ~]# mysql -uroot -p"123123"
3.破解密码三
- 在未知密码的情况下修改密码
- 可以使用update命令
- 可以修改配置文件,让mysql允许空密码登陆
#修改配置文件
[root@Test0 ~]# vim /etc/my.cnf
....... #在末行添加这一行-->代表允许空密码登陆
32 skip-grant-tables
#重启msyql
[root@Test0 ~]# systemctl restart mysqld
#尝试登陆mysql-->这里就发现可以空密码登陆
[root@Test0 ~]# mysql
...
mysql>
#查看一下允许访问root用户的host有哪些
mysql> use mysql
mysql> select user,host from user where user='root';
+------+-----------+
| user | host |
+------+-----------+
| root | localhost |
+------+-----------+
1 row in set (0.00 sec)
#然后修改密码-->这里使用的是update命令
#update是更新的肆意
#user是表
#后面跟的就是具体的定位指令
#把密码清空-->
mysql> update user set authentication_string='' where user='root';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
#清空了密码之后就退出
mysql> quit
Bye
#然后修改配置文件,-->取消空密码登陆
[root@Test0 ~]# vim /etc/my.cnf
....
#skip-grant-tables #注释掉这个
#重启mysqld服务-->然后空密码登陆
[root@Test0 ~]# systemctl restart mysqld
[root@Test0 ~]# mysql
#然后直接修改密码登陆
#然后刷新权限表格就ok了
mysql> alter user 'root'@'localhost' identified by 'llKK!@#123';
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
#退出尝试登陆--->登陆成功
[root@Test0 ~]# mysql -uroot -p'llKK!@#123'
4.破解密码四:
- 已知面的情况下可以直接使用命令来修改
- mysqladmin是命令
- 语法:mysqladmin -u(用户名) -p(旧密码) password “新密码”
- mysqladmin是命令
#直接使用命令来修改
[root@Test0 ~]# mysqladmin -uroot -p'llKK!@#123' password 'WWkk!@#234'
#最好就把所有的密码规则取消,不然就会很多密码不够复杂的报错
#直接修改配置文件
[root@Test0 ~]# vim /etc/my.cnf
...........#末行添加如下两行
validate_password_policy=0
validate_password_length=1
#重启
[root@Test0 ~]# systemctl restart mysqld