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

一、问题说明

除了常见的情况,例如没有实现数据挂载,导致数据丢失外,还需要考虑数据库是否被攻击,下图 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.mzph.cn/news/806991.shtml

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

相关文章

Harmony鸿蒙南向驱动开发-SDIO

SDIO(Secure Digital Input and Output)由SD卡发展而来,与SD卡统称为MMC(MultiMediaCard),二者使用相同的通信协议。SDIO接口兼容以前的SD卡,并且可以连接支持SDIO接口的其他设备。 运作机制 …

力扣HOT100 - 54. 螺旋矩阵

解题思路&#xff1a; 设置四个边界 class Solution {public List<Integer> spiralOrder(int[][] matrix) {if (matrix.length 0) return new ArrayList<Integer>();int l 0;int r matrix[0].length - 1;int t 0;int b matrix.length - 1;List<Integer>…

PyCharm如何调出Run窗口的搜索功能

搜索快捷键 搜索&#xff08;查找&#xff09;的快捷键默认有两个 Ctrl F Alt F3 只需要点击运行窗口的区域&#xff0c;再使用上面的快捷键就好了。 也可以在代码中查找&#xff0c;也是上述操作。 如果按了没反应怎么办&#xff1f; 1、可能是有些软件的某些功能的快捷…

使用Pandas解决问题:对比两列数据取最大值的五种方法

目录 一、使用max方法 二、使用apply方法结合lambda函数 三、使用np.maximum函数 四、使用clip方法 五、使用where方法结合条件赋值 总结&#xff1a; 在数据处理和分析中&#xff0c;经常需要比较两个或多个列的值&#xff0c;并取其中的最大值。Pandas库作为Python…

Linux(CentOS7)安装 Docker 以及 Docker 基本使用教程

目录 安装 基础依赖 安装 docker 开机自启 启动 docker 配置国内镜像源 使用教程 帮助命令 镜像命令 容器命令 容器终端 构建镜像 安装 基础依赖 如果直接安装 docker 时报错&#xff0c;提示缺少依赖&#xff0c;则根据提示将前置依赖安装即可&#xff0c;这里直…

计算机组成原理(存储器)

1、“821.2016T1(1)”&#xff0c;表示821真题&#xff0c;2016年的题&#xff0c;T1是 选择题/填空题/大题 的第一题&#xff0c;其他类似标记也是相通 2、个人小白总结自用&#xff0c;不一定适用于其他人&#xff0c;请自行甄别 3、有任何疑问&#xff0c;欢迎私信探讨&…

基于 SSM 数据结构课堂考勤管理系统的设计与实现

摘 要 高校的不断扩张让在校学生数量不断的增加&#xff0c;对于教师和管理人员的需求也在不断地增强&#xff0c;对日常的学生考勤管理的工作量也在日益增加&#xff0c;传统的人工点名签到的考勤管理模式已经给无法适用于当前高校考勤管理的需求&#xff0c;同时手动录入的…

C语言中的文件操作

C语言中的文件操作 1、文件的打开 创建文件指针变量 File* pf;定义一个指向FILE类型数据的指针变量&#xff0c;可以使pf指向某个文件的文件信息区&#xff0c;通过文件指针变量就能够找到与它关联的文件 &#xff08;1&#xff09;文件的打开 使用fopen函数打开文件&#…

白盒测试-条件覆盖

​ 条件覆盖是指运行代码进行测试时&#xff0c;程序中所有判断语句中的条件取值为真值为假的情况都被覆盖到&#xff0c;即每个判断语句的所有条件取真值和假值的情况都至少被经历过一次。 ​ 条件覆盖率的计算方法为&#xff1a;测试时覆盖到的条件语句真、假情况的总数 / 程…

LLM(一):大语言模型

自2022年&#xff0c;ChatGPT发布之后&#xff0c;大语言模型&#xff08;Large Language Model&#xff09;&#xff0c;简称LLM掀起了一波狂潮。作为学习理解LLM的开始&#xff0c;先来整体的理解一下大语言模型 一&#xff0c;发展历史 大语言模型的发展历史可以追溯到早期…

【讲解下目标追踪】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

每日一题——环形链表的约瑟夫问题

题目链接&#xff1a; 环形链表的约瑟夫问题_牛客题霸_牛客网 题目&#xff1a; 描述 编号为 1 到 n 的 n 个人围成一圈。从编号为 1 的人开始报数&#xff0c;报到 m 的人离开。 下一个人继续从 1 开始报数。 n-1 轮结束以后&#xff0c;只剩下一个人&#xff0c;问最后留…

idm线程越多越好吗 idm线程数多少合适 IDM百度云下载 IDM下载器如何修改线程数

IDM&#xff08;Internet Download Manager&#xff09;是一款流行的网络下载器&#xff0c;它支持多线程下载&#xff0c;这意味着它可以同时建立多个连接来下载文件的不同部分&#xff0c;从而提高下载速度。我们在使用IDM的时候总是有很多疑问&#xff0c;今天我们学习IDM线…

【形而上学】数据治理之元数据——用数据的数据管理数据

【形而上学】数据治理之元数据——用数据的数据管理数据 一、都柏林核心元数据元素集二、元数据2.1 什么是元数据2.2 元数据类型2.3 实现元数据的技术 三、元数据相关标准 一、都柏林核心元数据元素集 1995年3月&#xff0c;NCSA与OCLC共同在俄亥俄州都柏林市举行了一次仅有受邀…

【智能优化算法详解】粒子群算法PSO量子粒子群算法QPSO

1.粒子群算法PSO 博主言简意赅总结-算法思想&#xff1a;大方向下个体自学习探索群体交流共享 对比适应度找到最优点 背景 粒子群算法&#xff0c;也称粒子群优化算法或鸟群觅食算法&#xff08;Particle Swarm Optimization&#xff09;&#xff0c; 缩写为 PSO。粒子群…

Linux:文本编辑器 - vim

Linux&#xff1a;文本编辑器 - vim vim基本操作普通模式模式切换移动光标复制粘贴删除替换撤销 底行模式行号查找 vim基本操作 Vim(Vi Improved)是一款功能强大的文本编辑器&#xff0c;是Unix/Linux系统中广泛使用的编辑器之一。它源于上世纪70年代开发的Vi编辑器&#xff0…

C#学习笔记9:winform上位机与西门子PLC网口通信_上篇

今日继续我的C#学习笔记&#xff0c;今日开始学习打开使用千兆网口来进行与西门子PLC的通信&#xff1a; 文章提供整体代码、解释、测试效果截图、整体测试工程下载&#xff1a; 主要包含的知识有&#xff1a;下载NuGet程序包、西门子PLC及通信协议、搭建虚拟的S7通信仿真环境…

为了进阿里拿Offer,逼得我两个月吃透了这些Java高级面试题解析,终于上岸

JVM与调优 21 题及答案解析 JVM的内存结构。 JVM方法栈的工作过程&#xff0c;方法栈和本地方法栈有什么区别。 JVM的栈中引用如何和堆中的对象产生关联。 可以了解一下逃逸分析技术。 gc的常见算法 CMS以及G1的垃圾回收过程&#xff0c;CMS的各个阶段哪两个是Stop the wo…

51.网络游戏逆向分析与漏洞攻防-角色管理功能通信分析-角色选择的模拟与截取

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果 内容参考于&#xff1a;如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果&…

制造业、能源等传统行业进行数字化转型时要注意哪些问题?

制造业、能源等传统行业在进行数字化转型时需要注意以下几个关键问题&#xff1a; 1、明确转型目标和战略规划&#xff1a;企业需要根据自身的业务特点、市场需求和长远发展目标&#xff0c;制定清晰的数字化转型战略。包括确定转型的重点领域、预期成果、时间表和资源投入。 …