”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 保护您的数据:如何创建不可破解的 SQL 和 MySQL 数据库副本

保护您的数据:如何创建不可破解的 SQL 和 MySQL 数据库副本

发布于2024-11-08
浏览:286

Protect Your Data: How to Create Unhackable SQL and MySQL Database Copies

锁定前规划的审慎措施可确保 SQL 或 MySQL 数据库一旦转换为只读状态,即可按预期运行,并且仍可供指定用户组访问。这种远见还保证了数据库在将来需要更新或更改时可以安全地解锁。

将数据库设置为只读有一定的吸引力,这会引起 DBA 的共鸣。就好像数据库已经成熟并准备好走向世界,不受不断更新需求的阻碍。

当然,将数据库设置为只读的原因(无论是暂时还是永久)与数据库本身一样多种多样。以下是锁定 SQL 或 MySQL 数据库内容同时允许用户访问其内容的方法的全面概述。

正如 Atif Shehzad 在 MSSQLTips 网站上敏锐指出的那样,在锁定数据库之前,必须对其进行微调以确保最佳性能。例如,您无法更新只读数据库中的统计信息,也无法创建索引或对索引进行碎片整理。此外,您无法向数据库的对象添加扩展属性、编辑其权限或添加/删除用户。

Shehzad 提供了一个细致的八步预锁定脚本,可在将数据库转换为只读之前运行。该清单涵盖了从创建事务日志备份到修改权限和更新统计信息的所有内容。

八步预锁定清单可确保您的数据库在切换为只读之前得到优化和备份。来源:MSSQLTips。

数据库优化和备份后,请使用 ALTER DATABASE [数据库名称] SET READ_ONLY 命令或系统存储过程 sp_dboption(建议使用前者,因为该存储过程已从最新版本的 SQL Server 中删除)。或者,您可以在SSMS中右键单击数据库,选择属性 > 选项,然后将数据库只读状态设置为True。 SSMS 中的数据库图标和名称将更改以指示其只读状态。

将 MySQL 数据库转换为只读状态 — 并反转该过程

将 MySQL 数据库配置为只读的一个关键动机是防止备份过程中数据丢失。 MySQL 文档库提供了在复制设置中备份主服务器和从服务器、利用全局读锁和操作 read_only 系统变量的全面指南。

来源

复制设置指南设想了主服务器 (M1)、从服务器 (S1) 和客户端(C1 连接到 M1,C2 连接到 S1)。下面概述了有助于将主设备转换为只读模式并在备份完成后将其恢复到正常操作的命令。 (请注意,在某些版本中,“ENABLED”与“1”同义,“DISABLED”相当于“0”。)

初步命令将数据库切换为只读,后续命令在完成备份后将其恢复到正常状态。来源:MySQL 文档库。

在只读状态下,数据库可以查询,但不能修改。 StackOverflow 上 2013 年 8 月 23 日发布的一篇文章解释了如何撤销然后恢复特定用户的 DML 权限,该策略不太可能影响整个数据库的性能。

版本声明 本文转载于:https://dev.to/jackwilltech/protect-your-data-how-to-create-unhackable-sql-and-mysql-database-copies-lf1?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • Java中Lambda表达式为何需要“final”或“有效final”变量?
    Java中Lambda表达式为何需要“final”或“有效final”变量?
    Lambda Expressions Require "Final" or "Effectively Final" VariablesThe error message "Variable used in lambda expression shou...
    编程 发布于2025-04-18
  • 如何将MySQL数据库添加到Visual Studio 2012中的数据源对话框中?
    如何将MySQL数据库添加到Visual Studio 2012中的数据源对话框中?
    在Visual Studio 2012 尽管已安装了MySQL Connector v.6.5.4,但无法将MySQL数据库添加到实体框架的“ DataSource对话框”中。为了解决这一问题,至关重要的是要了解MySQL连接器v.6.5.5及以后的6.6.x版本将提供MySQL的官方Visual...
    编程 发布于2025-04-18
  • 如何在GO编译器中自定义编译优化?
    如何在GO编译器中自定义编译优化?
    在GO编译器中自定义编译优化 GO中的默认编译过程遵循特定的优化策略。 However, users may need to adjust these optimizations for specific requirements.Optimization Control in Go Compi...
    编程 发布于2025-04-18
  • 从C#正确调用SQL自定义函数(UDF)方法
    从C#正确调用SQL自定义函数(UDF)方法
    在C#中调用SQL定义的SQL定义已定义的函数在使用C#代码的SQL定义的函数中查询数据库。这是您可以从C#代码中调用名为“ TCUPOM”的T-SQL标量函数的方法: c#代码: 原始代码中的错误:Setting the CommandType to StoredProcedure when ...
    编程 发布于2025-04-18
  • 如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在“ dd/mm/yyyy hh:mm:mm:ss.ss”格式“ gormat 解决方案:的,请访问量很大,并应为procectiquiestate的,并在整个代码上正确格式不多: java.text.simpledateformat; 导入java.util.calendar; 导入java...
    编程 发布于2025-04-18
  • 为什么HTML无法打印页码及解决方案
    为什么HTML无法打印页码及解决方案
    无法在html页面上打印页码? @page规则在@Media内部和外部都无济于事。 HTML:Customization:@page { margin: 10%; @top-center { font-family: sans-serif; font-weight: bo...
    编程 发布于2025-04-18
  • 您如何在Laravel Blade模板中定义变量?
    您如何在Laravel Blade模板中定义变量?
    在Laravel Blade模板中使用Elegance 在blade模板中如何分配变量对于存储以后使用的数据至关重要。在使用“ {{}}”分配变量的同时,它可能并不总是最优雅的解决方案。幸运的是,Blade通过@php Directive提供了更优雅的方法: $ old_section =“...
    编程 发布于2025-04-18
  • Go模板范围中如何避免尾随逗号?
    Go模板范围中如何避免尾随逗号?
    在GO的文本模板中的最后一个元素的特殊情况处理处理范围的最后一个元素时,可能很棘手。以创建类似“(P1,P2,P3)”之类的字符串的任务。如果您使用一个简单的范围循环,则最终可能会在末端获得一个额外的逗号,从而导致“(P1,P2,P3,)”。 来解决此问题,我们可以利用模板范围的关键功能:声明两个...
    编程 发布于2025-04-18
  • 如何实现文本框自动高度调整?
    如何实现文本框自动高度调整?
    textarea auto height 探索如何自动调整文本核心的高度以匹配其内容的长度,以符合其内容的长度他们包含的文本量。如果文本超过预定义的高度,它将变得无法访问并需要滚动。此处提供的解决方案使用纯JavaScript根据其实际内容来调整文本方面的高度。定义了一个称为“ auto_gro...
    编程 发布于2025-04-18
  • Python元类工作原理及类创建与定制
    Python元类工作原理及类创建与定制
    python中的metaclasses是什么? Metaclasses负责在Python中创建类对象。就像类创建实例一样,元类也创建类。他们提供了对类创建过程的控制层,允许自定义类行为和属性。在Python中理解类作为对象的概念,类是描述用于创建新实例或对象的蓝图的对象。这意味着类本身是使用类关...
    编程 发布于2025-04-18
  • 如何使用不同数量列的联合数据库表?
    如何使用不同数量列的联合数据库表?
    合并列数不同的表 当尝试合并列数不同的数据库表时,可能会遇到挑战。一种直接的方法是在列数较少的表中,为缺失的列追加空值。 例如,考虑两个表,表 A 和表 B,其中表 A 的列数多于表 B。为了合并这些表,同时处理表 B 中缺失的列,请按照以下步骤操作: 确定表 B 中缺失的列,并将它们添加到表的末...
    编程 发布于2025-04-18
  • Python读取CSV文件UnicodeDecodeError终极解决方法
    Python读取CSV文件UnicodeDecodeError终极解决方法
    在试图使用已内置的CSV模块读取Python中时,CSV文件中的Unicode Decode Decode Decode Decode decode Error读取,您可能会遇到错误的错误:无法解码字节 在位置2-3中:截断\ uxxxxxxxx逃脱当CSV文件包含特殊字符或Unicode的路径逃...
    编程 发布于2025-04-18
  • 如何简化PHP中的JSON解析以获取多维阵列?
    如何简化PHP中的JSON解析以获取多维阵列?
    php 试图在PHP中解析JSON数据的JSON可能具有挑战性,尤其是在处理多维数组时。 To simplify the process, it's recommended to parse the JSON as an array rather than an object.To do...
    编程 发布于2025-04-18
  • 为什么不````''{margin:0; }`始终删除CSS中的最高边距?
    为什么不````''{margin:0; }`始终删除CSS中的最高边距?
    在CSS 问题:不正确的代码: 全球范围将所有余量重置为零,如提供的代码所建议的,可能会导致意外的副作用。解决特定的保证金问题是更建议的。 例如,在提供的示例中,将以下代码添加到CSS中,将解决余量问题: body H1 { 保证金顶:-40px; } 此方法更精确,避免了由全局保证金重置引...
    编程 发布于2025-04-18
  • Python中何时用"try"而非"if"检测变量值?
    Python中何时用"try"而非"if"检测变量值?
    使用“ try“ vs.” if”来测试python 在python中的变量值,在某些情况下,您可能需要在处理之前检查变量是否具有值。在使用“如果”或“ try”构建体之间决定。“ if” constructs result = function() 如果结果: 对于结果: ...
    编程 发布于2025-04-18

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3