• 服务器上数据库被删优化办法


    1、最近在写一个小项目,MySQL 数据库使用 Docker 安装部署在租的服务器上,然后使用 Navicat 连接数据库时,发现:

    ERROR 1045 (28000): Access denied for user ‘root‘@‘x.x.x.x‘ (using password: YES/NO)

    之前一直是能连上的,并且最近开发一直在使用,开发过程中编写过 sql 执行都是没问题的。

    2、百度发现这个错误是因为 root 账户没有远程访问权限(参考),即跨 ip 访问权限,但是之前安装部署时是打开了这个设置的(安装过程),支持远程访问的,而且最近使用也没有什么问题。

    3、但是抱着试一试的心态,还是重新执行了授权的命令

    grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option; 	#这里第一个root是用户名,第二个是密码,% 代表对所有 IP 开放权限,也可以设置单独的 IP
    flush privileges;
    

    执行完之后,发现确实可以登陆了。

    4、登录之后,发现 mysql 数据库中的 user 表里面多了条 root,访问权限 Host 为localhost (也可能是之前就有的),另一条 root,访问权限 Host 为 %,这样就所有的 IP 都可以访问了。

    5、然后启动微服务。数据库能够连接成功了,但是有出现了找不到数据,查看数据库发现上面的表都被人删掉了,而且多了一张 README 表,打开表发现里面内容如下:

    以下数据库已被删除:xxx。 我们有一个完整的备份。 要恢复它,您必须将0.006比特币(BTC)支付给我们的比特币地址xxxxxx。 有关说明,请通过xxx@xxx.com通过电子邮件联系我们。 任何与付款无关的邮件都将被忽略!

    原来是被黑客攻击了,提示要付款才能找回被删除的数据。

    6、在仔细查看用户

    mysql>select host,user,authentication_string from mysql.user;
    

    发现多了一个mysqld不限ip的用户,将它删除。
    删除用户:

    mysql>drop user mysqld@'%';
    

    查看授权:

    mysql>show grants;
    

    对固定ip授权:

    mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'x.x.x.x' IDENTIFIED BY 'xxx';
    

    不使用%对所有ip授权,仅对固定ip授权,减少可能的恶意访问。
    刷新授权:

    mysql>flush privileges;
    

    7、默认 root 账户的密码是 root,比较简单为了提高安全性,防止再次被黑客破解,需要修改密码。
    然后尝试去 user 表找密码的字段进行更新,按照传统改密码方式发现没有 password这个字段。

    mysql> update user set password=password('123') where user='root';
    

    ERROR 1054 (42S22): Unknown column ‘password’ in ‘field list’

    网上查了一下据说5.7 版本password 字段改成 authentication_string password 函数还是原来的password函数。可以看到密码是加密的,所以说,如果设置过密码但是忘记了,那不好意思了,是不能进行查看密码的,只能查看用户名,因为mysql密码是动态md5加密,是不可逆向查询的。

    mysql> update user set authentication_string=password('123') where user='root';
    

    8、开启 binlog 方便恢复数据
    在开启binlog遇到个问题记录下:
    1)配置my.cnf
    在这里插入图片描述
    2)将mysqld中config: /etc/my.cnf 放开
    在这里插入图片描述

    参考:

  • 相关阅读:
    pixi.js 简单交互事件(点击、缩放、平移)
    w3school
    并发(Concurrent)与并行(Parallel)的区别
    CTime获得当前电脑时间
    NX二次开发-UFUN获得体的表面积,体积,重心等UF_MODL_ask_mass_props_3d
    Jvm故障问题排查以及Jvm调优总结
    jmap命令详解----查看JVM内存使用详情
    jstack命令解析
    年轻带Young GC算法示意图
    【JVM】jstat命令详解---JVM的统计监测工具
  • 原文地址:https://www.cnblogs.com/firecode7/p/16120340.html
Copyright © 2020-2023  润新知