记录mysql数据库被攻击

  • 事件
  • 处理过程
  • 异常情况
    • 异常1
    • 异常2
  • 如何避免
  • 参考资料

事件

由于本人比较懒,几个月以前在云服务器上部署了mysql,建了一个demo就没管了。今天突然发现数据库连不上了…貌似我没改过密码… WTF…
跳过权限验证后发现,发现数据库表不见了,只有一个readme表,打开一看豁然开朗…原来被攻击了。表里描述如下:

以下数据库已被删除:demo。 我们有完整的备份。 要恢复它,您必须向我们的比特币地址bc1qqh56c8wayvmkrszgqduzx50dyq5ypqy8fguw38支付0.008比特币(BTC)。 如果您需要证明,请通过以下电子邮件与我们联系。 fang47@tutanota.com 。 任何与付款无关的邮件都将被忽略!

于是心里默念,辛亏只是个demo。顺便给大家提个醒,记得改密码!记得改密码!记得改密码!

处理过程

  1. 停止服务

sudo /etc/init.d/mysqld stop

service mysql stop

  1. 跳过权限验证

mysqld_safe --user=mysql --skip-grant-tables --skip-networking &

  1. 启动服务

sudo /etc/init.d/mysqld start

service mysql start

  1. 使用root用户登录 MySQL

mysql -u root mysql

  1. 更改密码(可能出现异常1-2):

5.7以下版本使用:.
mysql> UPDATE user SET Password=PASSWORD(‘你的新密码’) where USER=‘root’;
5.7及以上版本使用:
mysql>update user set authentication_string=PASSWORD(‘你的新密码’) where user=‘root’;

  1. 刷新权限

mysql> FLUSH PRIVILEGES;

  1. 退出mysql登陆:

mysql> quit

  1. 重启mysql服务:

sudo /etc/init.d/mysqld restart

service mysql restart

  1. 使用新密码登录

异常情况

异常1

更新密码时发现报错Unknown column ‘password’ ,这个是由于mysql5.7密码字段改为了authentication_string

mysql> update user set password=PASSWORD('你的新密码') where user='root';
ERROR 1054 (42S22): Unknown column 'password' in 'field list'

异常2

明明改了字段,表面上成功了,仔细一看Rows matched:0 Changed: 0

Query OK, 0 rows affected, 1 warning (0.00 sec)
Rows matched: 0  Changed: 0  Warnings: 1

于是发现数据库没有root用户,太狠了,连root都给我删了,解决方案是创建root用户,这里就不过多啰嗦。本人取巧直接用本地其他数据库root用户脚本。

INSERT INTO `mysql`.`user` (`Host`, `User`, `Select_priv`, `Insert_priv`, `Update_priv`, `Delete_priv`, `Create_priv`, `Drop_priv`, `Reload_priv`, `Shutdown_priv`, `Process_priv`, `File_priv`, `Grant_priv`, `References_priv`, `Index_priv`, `Alter_priv`, `Show_db_priv`, `Super_priv`, `Create_tmp_table_priv`, `Lock_tables_priv`, `Execute_priv`, `Repl_slave_priv`, `Repl_client_priv`, `Create_view_priv`, `Show_view_priv`, `Create_routine_priv`, `Alter_routine_priv`, `Create_user_priv`, `Event_priv`, `Trigger_priv`, `Create_tablespace_priv`, `ssl_type`, `ssl_cipher`, `x509_issuer`, `x509_subject`, `max_questions`, `max_updates`, `max_connections`, `max_user_connections`, `plugin`, `authentication_string`, `password_expired`, `password_last_changed`, `password_lifetime`, `account_locked`) VALUES ('localhost', 'root', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '', '', '', '', 0, 0, 0, 0, 'mysql_native_password', PASSWORD('你的密码'), 'N', now(), NULL, 'N');
Query OK, 1 row affected (0.00 sec)

未防止大家也取巧用我上面的脚本导致密码非你自己的,下面再执行下修改密码,可以看到修改成功

mysql> update user set authentication_string=PASSWORD('你的新密码') where user='root';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 1

如何避免

1 root 账号记得修改密码
2 增加远程访问控制(自行百度吧)

参考资料

mysql报错“#1045 – Access denied for user ‘root’@’localhost’ (using password: NO)”解决办法
mysql5.7 修改密码update password提示找不到password字段
Mysql误删了root用户怎么办

记录mysql数据库被攻击相关推荐

  1. MySQL数据库被攻击,被删库勒索,逼迫我使出洪荒之力进行恢复数据

    昨天连夜赶了一篇文章,讲述了一个被黑客连续攻击服务器三次的普通"搬砖人",一次比一次艰难,一次比一次狠. 我给大家看几张图,看看黑客的"佳作" 首先创建一个数据 ...

  2. 阿里云中mysql数据库被攻击了,最终数据找回来了

    介绍 昨天登自己的网站的时候,发现登不上去,由于是用springboot写的,存放在阿里云轻量云服务器中,所以我去后台查看了一下日志,发现是查不到数据了. 这个时候就发现是数据库出现了问题,然后通过图 ...

  3. 记录MySQL数据库如何修改密码.

    MySQL数据库修改密码方法 仅作记录 仅作记录 以下为可行方法, 实践过了. ALTER USER "root"@"localhost" IDENTIFIED ...

  4. [记录]---mysql数据库,decimal类型设置默认值0,不要是null

    mysql数据库 类型为decimal的字段,最好把默认值设置为0,不要设置为null. 因为null值在代码中及其容易造成空指针.

  5. mysql复数记录,MySQL 数据库铁律(小结)

    好的数据库规范有助于减少软件实现的复杂度,降低沟通成本,本铁律主要涵盖了建库建表.建索引.写 SQL.ORM 映射等方面的处理约定. 1.建库铁律 - 铁律 Level 备注 字符集 使用 utf-8 ...

  6. mysql数据库被攻击

    又惊讶又惊喜 前两天跟着一个视频写一个小项目,然后没写完停下已经几天了,但是sqlyog在电脑上是一直打开的. 然后昨天中午,我趴在电脑前睡觉,一觉醒来,我的edge新增了两千多个页面,而且还在增加, ...

  7. mysql中如何将一个表中的部分记录合并,MySQL数据库将多条记录的单个字段合并成一条记录_MySQL...

    bitsCN.com MySQL数据库将多条记录的单个字段合并成一条记录 MySQL数据库将多条记录的单个字段合并成一条记录的操作是本文 我们主要要介绍的内容,接下来就让我们一起来了解一下这部分内容吧 ...

  8. 《Mysql数据库》

    一.MySql(MariDB) 学习数据库主要学习的是如何对数据进行增删改查操作. Mysql菜鸟教程:[https://www.runoob.com/mysql/mysql-tutorial.htm ...

  9. MySQL数据库文件

    MySQL数据库文件 本文档从MySQL数据库和存储引擎层面介绍各种类型的文件. 参数文件(my.cnf) 错误日志(error log) 二进制日志文件(binary log) 慢查询日志(slow ...

最新文章

  1. 云计算赋能人工智能,未来的红利在哪?
  2. 【学习笔记】超简单的多项式开方
  3. CentOS7 Apache调优之开启deflate压缩模块
  4. JAVA post和get方式请求远程HTTP接口
  5. [iptables]Redhat 7.2下使用iptables实现NAT
  6. 【数理知识】《随机过程》方兆本老师-第3章-Markov 过程
  7. 并发测试mysql_实践100个线程:一次MySQL数据并发问题
  8. 格力机器人图解_格力工业机器人:是时候展示真正的实力了
  9. apache 目录网站显示indexs
  10. python使用post方式提交数据
  11. VLAN与trunk配置
  12. python牛顿迭代法求平方根_牛顿迭代法计算平方根(Java,Python实现)
  13. ABS_MT_TOUCH_MAJOR和ABS_MT_WIDTH_MAJOR
  14. 看从小自带BUFF的他,如何用代码降低万物互联的门槛
  15. 吴恩达深度学习5.1笔记_Sequence Models_循环序列模型
  16. 像冠军一样创建报告! Reporting Services的提示和技巧
  17. Xcode pch文件配置及object c 单例创建
  18. 关于SQLServer2005的学习笔记——异常捕获及处理
  19. 感知机学习算法的原始形式
  20. 单片微机计算机原理与接口技术高峰,单片微机原理与接口技术(第2版)

热门文章

  1. 公寓宽带服务器无响应,利用RLDP协议解决网络环路故障
  2. 电脑端播放m3u8视频
  3. 教程篇(7.0) 03. FortiGate安全 防火墙策略 ❀ Fortinet 网络安全专家 NSE 4
  4. 天馈线测试仪是什么?
  5. 【HTTP Status 500 - Servlet execution threw an exception】
  6. hazelcast 搭建_hazelcast Management Center 源码分析
  7. 笔记-CTA认证需要的操作, 应用可卸载, 系统还原后应用重装--Camera模块
  8. 如何科学评估疫情对业务的影响?
  9. 《刻意练习》读书分享
  10. 嵌入式linux IIO驱动