mariadb/mysql数据库修改密码

最近把项目部署到云服务器上,为了方便访问,关闭了服务器防火墙,开启了数据库远程访问权限,但是第二天再去远程访问数据库,发现连接不上数据库,登录服务器查看,也登录不上数据库,一直提示密码错误,于是猜测数据库收到了攻击,准备跳过密码进入数据库查看一下。
先关闭mariadb

systemctl stop mariadb

好像关不掉,只能杀进程了,
查看mariadb进程

ps -ef | grep mariadb

在这里插入图片描述
PID(process ID):是程序被操作系统加载到内存成为进程后动态分配的资源。

PPID(parent process ID):PPID是程序的父进程号。

关闭mariadb进程

kill -9 5154

确认关闭
在这里插入图片描述
跳过密码进入

mysqld_safe --skip-grant-tables &

在这里插入图片描述
在这里直接回车,然后就可以跳过命令直接进入数据库了

mysql -u root

在这里插入图片描述
进入数据库之后,选择mysql库

USE mysql

修改user表中的密码(修改为root)

UPDATE user SET password=password('root') WHERE user='root';

如果是mysql 8.0的是不支持这种方法设置密码的,可以尝试如下方法;

flush privileges;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
或者直接:
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码';
flush privileges;
exit; #退出

或者:

show databases;
use mysql;
update user set authentication_string=PASSWORD("你的密码") where user='root';
update user set plugin="mysql_native_password";
flush privileges;
exit;

执行结束之后,查询user表:

SELECT password,user,host FROM user WHERE user='root';

在这里插入图片描述
发现表中的密码是经过加密的,用户进行登录验证的时候应该会用同样的加密算法进行加密然后跟数据库中密码比对,这就意味着普通改表语句是没法正常修改密码的,比如如下语句:

UPDATE user SET password='root' WHERE user='root';

执行完以上错误语句之后,再查询数据库,发现表中的密码并不是加密之后的,而直接显示修改后的密码,这样就会造成登录时输入密码无法匹配。
在这里插入图片描述
修改完密码之后,进入一个库中的表查看发现:
在这里插入图片描述
果然如此

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值