云服务器上Docker启动的MySQL会自动删除数据库的问题

news2025/6/21 7:17:55

一、问题说明

除了常见的情况,例如没有实现数据挂载,导致数据丢失外,还需要考虑数据库是否被攻击,下图 REVOVER_YOUR_DATA 就代表被勒索了,这种情况通常是数据库端口使用了默认端口(3306)且密码设置简单导致, 当前情况系统不安全了,不建议您继续使用当前系统环境。

在这里插入图片描述

二、解决方法

2.1、密码方面

  1. 使用强密码策略,要求用户设置复杂且难以猜测的密码。

请注意,如果您使用的是MySQL 5.7及以上版本,并且在安装时使用了强密码策略插件(如validate_password),您可能需要设置一个更安全的密码。

以下是一个示例代码,展示了如何在MySQL命令行中执行这些步骤:

# 以管理员权限登录MySQL服务
mysql -u root -p
-- 选择MySQL数据库
use mysql;

-- 更新root用户的密码
UPDATE user SET authentication_string=PASSWORD('新密码') WHERE user='root';

-- 刷新权限使修改立即生效
flush privileges;

-- 退出MySQL
EXIT;

在这里插入图片描述

  1. 定期更换密码,降低密码被破解的风险。

在MySQL中,定期更换密码可以通过定时任务来实现,例如使用cron工具来定时执行更换密码的命令。

以下是一个简单的例子:

① 编辑crontab文件以添加定时任务。

crontab -e

② 添加以下行来设置定时任务,比如每月的第一天凌晨1点更换密码。

0 1 1 * ? /usr/bin/mysqladmin -u root -p'oldpassword' password 'newpassword'

确保将oldpassword替换为当前的MySQL root 用户密码,将newpassword替换为你想要设定的新密码。

注意

  • 确保mysqladmin的路径正确。

  • 如果当前MySQL root 密码为空,可以省略-p'oldpassword'部分。

  • 新密码应该遵循安全最佳实践,包括使用复杂度和随机性的要求。

  • 更改密码可能需要相应的权限,如果是在多用户系统上,请确保当前用户有执行这些操作的权限。

  • 如果你使用的是MySQL 5.7或更新版本,可以使用ALTER USER语句来更改密码,例如:
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';
    确保使用正确的SQL语法来匹配你的MySQL版本。

  1. 禁用或限制默认的管理员账户,避免使用通用的或已知的管理员用户名root。

要在MySQL中禁用或限制默认的管理员账户(如 root 用户),你可以创建一个新的管理员账户并授予适当的权限,然后禁用或删除默认的 root 账户。

以下是一个简化的步骤和示例代码:

① 创建一个新的管理员账户。

② 授予新账户足够的权限。

③ 禁用或删除默认的root账户。

示例代码:

-- 创建一个新的管理员账户
CREATE USER 'new_admin'@'localhost' IDENTIFIED BY 'StrongPassword!';
 
-- 授予新账户所有权限
GRANT ALL PRIVILEGES ON *.* TO 'new_admin'@'localhost' WITH GRANT OPTION;
 
-- 刷新权限使更改生效
FLUSH PRIVILEGES;
 
-- 禁用root账户(可选)
RENAME USER 'root'@'localhost' TO 'root'@'localhost' DISABLE;
 
-- 或者删除root账户(如果安全)
-- DROP USER 'root'@'localhost';

在实际操作中,你应该选择一个安全的密码为新用户设置密码,并考虑是否需要删除默认的 root 账户。禁用 root 账户可以增加一层安全性,但同时也可能导致你无法从 root 账户访问服务器,除非你有其他的备用方式。记得在操作前备份相关的配置信息。

2.2、访问授权与权限管理

  1. 阿里云服务器的安全组只允许特定的ip访问。

https://jingyan.baidu.com/article/c275f6ba101c72e33c75676e.html

  1. mysql给用户分配地址权限:只允许特定的IP地址或网络段进行访问。

在MySQL中,您可以通过GRANT语句来给用户分配特定的访问权限,包括IP地址权限。

以下是一个示例代码,展示如何仅允许特定的IP地址或网段访问数据库服务器:

-- 假设您已经有一个用户'myuser'@'%',并希望限制其只能从特定的IP地址或网段访问
 
-- 从单独的IP地址(例如192.168.1.100)授予权限
GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'192.168.1.100';
 
-- 从整个子网段(例如192.168.1.0/24)授予权限
GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'192.168.1.%';
 
-- 刷新权限使变更生效
FLUSH PRIVILEGES;

请确保替换mydatabase为您想要授权的数据库名,myuser为您的用户名,以及IP地址或网段为您想要允许的地址。

注意:在实际操作中,应该避免使用GRANT ALL PRIVILEGES,而应该只授予必要的最小权限,以保持安全性。

2.3、备份方面

  1. 将数据库的数据进行定期备,并且放到一个安全的地方。

为了定期备份MySQL数据库并将其放在一个安全的地方,你可以使用mysqldump命令行工具来创建数据库的SQL备份文件,然后使用rsync或其他文件同步工具将其同步到安全的服务器或位置。

以下是一个简单的脚本示例,展示如何自动执行这些步骤:

#!/bin/bash
 
# 配置变量
BACKUP_DIR="/path/to/your/backup/directory"
DB_USER="your_db_username"
DB_PASSWORD="your_db_password"
DB_NAME="your_database_name"
 
# 创建备份
mkdir -p "$BACKUP_DIR"
mysqldump -u "$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" > "$BACKUP_DIR/$DB_NAME-$(date +%Y%m%d%H%M%S).sql"
 
# 将备份文件同步到安全的地方(请替换以下命令中的[security_server]为你的安全服务器地址)
rsync -avz --delete "$BACKUP_DIR" [security_server]:/path/to/your/backup/directory
 
# 删除旧的备份(保留最新的3个备份)
cd "$BACKUP_DIR"
ls -t | tail -n +4 | xargs rm -f

确保将脚本中的变量(BACKUP_DIR, DB_USER, DB_PASSWORD, DB_NAME)替换为你的实际配置。

这个脚本首先创建了一个包含当前日期时间的备份文件,然后使用rsync将备份同步到安全的服务器。最后,它删除除最新的3个备份文件以外的所有旧备份文件。

你可以将这个脚本添加到你的crontab中以定期执行备份:

crontab -e

然后添加一行以设置你的备份计划,例如每天凌晨1点执行:

0 1 * * * /path/to/your/backup/script.sh

确保给脚本可执行权限:

chmod +x /path/to/your/backup/script.sh

请注意,你需要根据你的实际环境调整这些命令,并确保rsyncmysqldump在你的系统上可用。同时,保护好你的数据库凭证,并确保只有授权的人可以访问你的安全服务器。


参考链接:https://blog.csdn.net/mynameisghr/article/details/137072228

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1584912.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Coursera吴恩达《深度学习》课程总结(全)

这里有Coursera吴恩达《深度学习》课程的完整学习笔记,一共5门课:《神经网络和深度学习》、《改善深层神经网络》、《结构化机器学习项目》、《卷积神经网络》和《序列模型》, 第一门课:神经网络和深度学习基础,介绍一…

mac电脑安装软件报错:无法检查更新,请检查你的互联网连接

1、点菜单栏搜索图标,输入:终端 ,找到后,点击打开 2、输入以下命令:(复制粘贴进去)回车安装 /usr/sbin/softwareupdate --install-rosetta --agree-to-license 3、提示【Install of Rosetta …

[dvwa] CSRF

CSRF 0x01 low 跨站,输入密码和确认密码直接写在url中,将连接分享给目标,点击后修改密码 社工方式让目标点击短链接 伪造404页,在图片中写路径为payload,目标载入网页自动请求构造链接,目标被攻击 http…

学习云计算HCIE选择誉天有什么优势?

誉天云计算课程优势实战性强 课程注重实践操作,通过实际案例和实验操作,让学员深入了解云计算的应用场景和实际操作技能。课程内容全面 涵盖所有云计算涉及的IT基础知识、服务器、存储、网络等方面的基础知识,开源操作系统Linux,开…

Java 实例 - 在控制台上输入密码要求其数字和字母混搭等长度限制(Pattern正则表达式)

1.在控制台上输入密码,要求密码由数字和字母混搭,关键词是_,且密码的长度至少1位,不得超过6位 package com.guyu.demo;import java.util.Scanner; import java.util.regex.Pattern;/*** * 2024年4月11日 上午9:57:40* author Guyu…

FPGA开源项目分享——基于 DE1-SOC 的 String Art 实现

导语 今天继续康奈尔大学FPGA课程ECE 5760的典型案例分享——基于DE1-SOC的String Art实现。 (更多其他案例请参考网站: Final Projects ECE 5760) 1. 项目概述 项目网址 ECE 5760 Final Project 项目说明 String Art起源于19世纪的数学…

显示学习4(基于树莓派Pico) -- 游戏

来自:https://github.com/zelacerda/micropython 代码改造了一下,让它可以跑起来。 简单分析一下代码。外层是一个死循环,有一个状态机来对应不同的场景。 def loop():while True:if state 0: splash_screen()elif state 1: game_waiti…

【uniapp】省市区下拉列表组件

1. 效果图 2. 组件完整代码 <template><view class="custom-area-picker"><view

Day:006(1) | Python爬虫:高效数据抓取的编程技术(爬虫工具)

selenium介绍与安装 Selenium是一个Web的自动化测试工具&#xff0c;最初是为网站自动化测试而开发的&#xff0c;类型像我们玩游戏用的按键精灵&#xff0c;可以按指定的命令自动操作&#xff0c;不同是Selenium 可以直接运行在浏览器上&#xff0c;它支持所有主流的浏览器&am…

idea如何debug看springsecurity的过滤器顺序

idea如何debug看springsecurity的过滤器顺序 先配置一个Spring启动对象,后续需要根据这个对象来获取SpringSecurity的过滤器链 设置一个输出信息&#xff0c;需要在输出信息这里打上断点&#xff0c;才方便查看过滤器链 public static void main(String[] args) {//此时不…

[opencv]VideoWriter写出fourcc格式

fourcc支持的格式 fourcc全名Four-Character Codes&#xff0c;四字符代码&#xff0c;该编码由四个字符组成 cv2.VideoWriter_fourcc(O,O,O,O) cv2.VideoWriter_fourcc(*OOOO) 通常写法有上述两种形式&#xff0c;O代表一个字符&#xff0c;通常有 支持avi格式的有&#…

LeetCode 142.环形链表II(数学公式推导)

给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整…

C语言中的数据结构--链表的应用1(2)

前言 上一节我们学习了链表的概念以及链表的实现&#xff0c;那么本节我们就来了解一下链表具体有什么用&#xff0c;可以解决哪些实质性的问题&#xff0c;我们借用习题来加强对链表的理解&#xff0c;那么废话不多说&#xff0c;我们正式进入今天的学习 单链表相关经典算法O…

配置及第三方授权申请教程

项目需要配置的地方不多&#xff0c;主要就两个地方需要注意&#xff1a;邮箱授权和第三方授权需要提前申请 1.基本设置 1.1 打开application.yml&#xff0c;修改数据库ip等基本信息 这些基本的配置就不多说了&#xff0c;基本就是改下服务器ip和账号密码什么的 1.2 获取QQ…

WebGIS实现各地区COVID-19数据一览

1.项目地址 GISpjd/WebGIS-Show-Covid19 (github.com)&#xff0c;具体每个文件的职能可以参考README文档。 2.前言 预览 >> 所用技术栈&#xff1a; 项目需求本身不是过于复杂&#xff0c;所以没有在相应前端框架下完成&#xff0c;但转入框架也是比较容易的 &#…

DJ-D500/0.5机械式隔膜计量泵

一、DJ-D500/0.5机械式隔膜计量泵概述&#xff1a;DJ-D500/0.5机械式隔膜计量泵是一款设计精良、结构紧凑的计量设备&#xff0c;专为精确输送和计量各种化学液体而设计。该泵采用先进的机械驱动机制&#xff0c;能够确保在各种工作压力下都能实现高精度的流量控制。 二、技术特…

Transformer模型-数据预处理,训练,推理(预测)的简明介绍

Transformer模型-数据预处理&#xff0c;训练&#xff0c;推理&#xff08;预测&#xff09;的简明介绍 在继续探讨之前&#xff0c;假定已经对各个模块的功能有了充分的了解&#xff1a; 人工智能AI 虚拟现实VR 黑客帝国_Ankie&#xff08;资深技术项目经理&#xff09;的博客…

Vue2创建过程记录

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、搭建node二、安装Vue CLI三、搭建新项目四、Elemet安装&#xff08;参照官网步骤[Element官网](https://element.eleme.cn/#/zh-CN/component/installation)&am…

2024年安卓轮播图代码+定时翻页(全网代码最少实现)

2024年安卓轮播图代码定时翻页 asda 这里是Fragment子类的继承如果使用 AppCompatActivity请修改一下很简单的如果又看不懂的话可以访问使用我的gpt&#xff1a;https://0.00000.work/ 免费3.5的 直接吧代码扔给他然后和他说帮忙解释一下每一行作用 Integer[] data{R.drawab…