MD5是不可逆的。
但是同样值的字符串只能有一个MD5编码。
所以用户登录输入密码后:
在后台验证时是先把取得的用户密码转换成MD5码,然后和数据库中的MD5码比较。
如果你的字段够长度的话:
UPDATE users SET password = MD5(password)
如果长度不够,可以先增加长度后再做,或者多建一列,完成后删除原来的列!(如passwd)
UPDATE users SET passwd = MD5(password)
原因:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则改为caching_sha2_password解决办法:
1、升级客户端
2、把mysql用户登录密码加密规则还原成mysql_native_password:
ALTER USER xxxx IDENTIFIED WITH mysql_native_password BY '新密码'
mysql -uroot -p 输入密码回车后,出现如下图错误。这时候需要我们破解密码。service mysqld stop //先停止mysql服务。然后打开mysql配置文件/etc/my.cnf.在【mysqld】下面添加一行代码:skip-grant-tables。这行代码意思就是跳过跳过授权表,即是可以跳过密码验证直接进入数据库。service mysqld restart //重启mysql数据库。假如不重启的话,不会生效。mysql -uroot -p //此时直接回车,既可以进入数据库。出现mysql>就说明你已经进入到mysql数据库里了。进数据库后,use mysql //选择mysql这个库,因为mysql的root密码存放在这个数据库里。show tables //查看下mysql库里有哪些表,我们需要 *** 作的用户名密码都在user表里。desc user //查看下user表有哪些字段更改root密码。update user set password=password('123456') where user="root" //用户选root,可以随便更改成任意密码,我这里设置的123456,password()是mysql密码加密的一个函数。flush privileges //刷新下密码,使更改的生效。exit //退出数据库。退出数据库,重新登录mysql -uroot -p //回车输入刚刚更改的密码,就能进去了。然后再次进入配置文件vi /etc/my.cnf 把skip-grant-tables去掉。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)