mysql 加密 tde_TDE与列级数据加密

2023-11-27 19:30

本文主要是介绍mysql 加密 tde_TDE与列级数据加密,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、测试TDE

此部分内容扩展SQL Server安全系列的第九篇:SQL Server安全透明数据加密的测试TDE章节。启用TDE的详细步骤请参考原文。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

--Create a test database

CREATE DATABASEUestDBGO

--Create a certificate in master to use with TDE

USEmaster;GO

--TDE hooks into encryption key hierarchy in SQL Server

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '!drJP9QXC&Vi%cs';GO

--Create the certificate used to protect the database encryption key

CREATE CERTIFICATE UestDBTDECert WITH SUBJECT = 'Certificate to implement TDE on UestDB';GO

--Backup the master_key

BACKUP MASTER KEY TO FILE = 'D:\SQL2012\MasterKey.bak' ENCRYPTION BY PASSWORD = 'pass';GO

--Backup the certificate--Either create the D:\SQL2012 folder or change it in the code below

BACKUP CERTIFICATE UestDBTDECert TO FILE = 'D:\SQL2012\UestDBTDECert'

WITH PRIVATE KEY ( FILE = 'D:\SQL2012\UestDBTDECertPrivateKey',

ENCRYPTIONBY PASSWORD = 'RISiS9Ul%CByEk6');GO

--Must backup private key as well

View Code

代码1 创建主密钥、证书并备份主密钥、证书

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

USEUestDB;GO

--Create the database encryption key for TDE. Analogous to database master key for data encryption.

CREATE DATABASE ENCRYPTION KEY

WITH ALGORITHM =TRIPLE_DES_3KEY

ENCRYPTIONBYSERVER CERTIFICATE UestDBTDECert;GO

--Get a warning about backing up the key, if you haven't already--...take the advice and back it up!

--Now need to turn TDE on.

ALTER DATABASE UestDB SET ENCRYPTION ON;GO

View Code

代码2 创建数据库加密密钥并启用TDE

接下来模拟证书和主库密钥丢失的情况

->1 del master_key + certificate

->2 create master_key + certificate

->3 create master_key + restore certificate

->4 restore master_key + certificate

首先备份UestDB数据库

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

--backup test database

BACKUP DATABASEUestDBTO DISK = N'D:\SQL2012\MSSQL11.SQL12\MSSQL\Backup\UestDB.bak'

WITH NOFORMAT, INIT, NAME = N'UestDB Full Database Backup',

SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS= 10;GO

View Code

代码3 备份数据库

1、删除证书、删除master_key+重启数据库服务

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

USEmasterGO

--Oops! We lost the certificate and don't have a copy!--Or, going to restore the database to another server instance

DROPCERTIFICATE UestDBTDECert;GO

DROP MASTER KEY;GO

View Code

证书'UestDBTDECert'是由主密钥加密的,因此需先删除证书才能删除master_key。重启数据库服务后在对象资源管理器下展开UestDB数据报错:

ae8f32953850578c7c135179e303c874.png

0c9445172f5cc5c52e1db1d6852d4aa7.png

图1 UestDB不能访问

查看ERRORLOG日志如下所示:

1c9ee583127b3e7e7be67b17551f6caf.png

图2 删除证书、删除master_key

2、用源代码重新创建master_key、创建证书+重启数据库服务

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

--Create a certificate in master to use with TDE

USEmaster;GO

--TDE hooks into encryption key hierarchy in SQL Server

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '!drJP9QXC&Vi%cs';GO

--Create the certificate used to protect the database encryption key

CREATE CERTIFICATE UestDBTDECert WITH SUBJECT = 'Certificate to implement TDE on UestDB';GO

View Code

重启数据库服务后,UestDB库依然不能访问,ERRORLOG日志如下所示:

72320d6a372583b704982df76d0fbfc9.png

图3 重新创建master_key、创建证书

3、用源代码重新创建master_key、还原证书+重启数据库服务

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

--Clean up

USEmaster;GO

DROPCERTIFICATE UestDBTDECert;GO

DROP MASTER KEY;GO

--TDE hooks into encryption key hierarchy in SQL Server

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '!drJP9QXC&Vi%cs';GO

--Restore the certificate

CREATECERTIFICATE UestDBTDECertFROM FILE = 'D:\SQL2012\UestDBTDECert'

WITH PRIVATE KEY ( FILE = 'D:\SQL2012\UestDBTDECertPrivateKey',

DECRYPTIONBY PASSWORD = 'RISiS9Ul%CByEk6');

View Code

重启数据库服务后,UestDB数据库能正常访问(实际上创建mater_key使用其他密码也可以,总结来说就是证书一定要有备份),ERRORLOG日志如下所示:

d724052b976c5ef44ec72a1950209cf6.png

图4 重新创建master_key、还原证书

4、还原master_key、还原证书+重启数据库服务

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

--Clean up

USEmaster;GO

DROPCERTIFICATE UestDBTDECert;GO

DROP MASTER KEY;GO

--Restore the master_key

RESTORE MASTER KEY FROM FILE='D:\SQL2012\MasterKey.bak'DECRYPTIONBY PASSWORD ='pass'--备份数据库主密钥时指定的密码

ENCRYPTION BY PASSWORD ='newpass'--数据库主密钥使用的新密码,除非重新应用Service Master Key的加密,否则需使用此密码显示打开和关闭数据库主密钥)

GO

--打开数据库主密钥

OPEN MASTER KEY DECRYPTION BY PASSWORD = 'newpass'

--Restore the certificate

CREATECERTIFICATE UestDBTDECertFROM FILE = 'D:\SQL2012\UestDBTDECert'

WITH PRIVATE KEY ( FILE = 'D:\SQL2012\UestDBTDECertPrivateKey',

DECRYPTIONBY PASSWORD = 'RISiS9Ul%CByEk6');--关闭数据库主密钥

CLOSE MASTER KEY

View Code

ERRORLOG日志如下所示:

bd9f37af2ba068129736e59096b1c34d.png

图5 还原master_key、还原证书(未应用Service Master Key的加密)

“在执行此操作之前,请在数据库中创建一个主密钥或在会话中打开该主密钥。”此时UestDB数据库不能访问,想想在我们创建证书的时候如果没有用密码打开master key也会报这样的错,这是由于还原出来master key只使用了密码加密,而没有使用Service Master Key加密。因此对于相关的密钥、证书操作都要先使用OPEN MASTER KEY。下面我们在还原master key之后,重新应用Service Master Key的加密

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

--Clean up

USEmaster;GO

DROPCERTIFICATE UestDBTDECert;GO

DROP MASTER KEY;GO

--Restore the master_key

RESTORE MASTER KEY FROM FILE='D:\SQL2012\MasterKey.bak'DECRYPTIONBY PASSWORD ='pass'--备份数据库主密钥时指定的密码

ENCRYPTION BY PASSWORD ='newpass'--数据库主密钥使用的新密码,除非重新应用Service Master Key的加密,否则需使用此密码显示打开和关闭数据库主密钥)

GO

--打开数据库主密钥

OPEN MASTER KEY DECRYPTION BY PASSWORD = 'newpass'

--重新应用Service Master Key的加密

ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY--执行后,数据库主密钥不再需要被显式打开或关闭,拥有足够许可(如sysadmin)的用户自动使用数据库主密钥解密--关闭数据库主密钥

CLOSE MASTER KEY

--Restore the certificate

CREATECERTIFICATE UestDBTDECertFROM FILE = 'D:\SQL2012\UestDBTDECert'

WITH PRIVATE KEY ( FILE = 'D:\SQL2012\UestDBTDECertPrivateKey',

DECRYPTIONBY PASSWORD = 'RISiS9Ul%CByEk6');

View Code

ERRORLOG日志如下所示:

50057d84f38265f27ef7ff4b880d3fb6.png

图6 还原master_key、还原证书(重新应用Service Master Key的加密)

意外收获:在自己电脑上测试,频繁重启数据库服务,导致SSMS卡死,相关代码却没有保存。等待一段时候SSMS还是未响应:

23fa418820d17a191269710fa870c93a.png

图7 SSMS未响应

到相关目录寻找是否有临时文件保存了代码

ca2bf2ba0f79c072efd4ecf0ac99aa05.png

图8 C:\Users\Administrator\Documents\SQL Server Management Studio\Backup Files\Solution1

第二天打开SSMS提示

db9f85b523fae04b4215032a107586d2.png

图9

点击恢复选定的文件,到相应目录查找C:\Users\Administrator\AppData\Local\Temp

8fa3baebeb1ea4795daadf528bf8f8f9.png

图10

算是幸运,文件在当时已经找到。还是要养成随时保存脚本的习惯!

二、列数据加密

此部分内容扩展SQL Server安全系列的第八篇:SQL Server安全数据加密。列数据加密的详细步骤请参考原文。本节重点关注列数据加密迁移及非对称密钥和对称密钥的修改。

首先,我们继续使用本篇第一部分创建的UestDB数据库,创建测试使用的表:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

USEUestDBGO

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[LoginsInfo]') AND type in (N'U'))DROP TABLE [dbo].[LoginsInfo]

GO

CREATE TABLE [LoginsInfo]([Id] [int] IDENTITY(1,1) NOT NULL,[Item] [varchar](20) NULL,[LoginName] [varchar](30) NULL,[PassWords] [varbinary](1000) NULL,[Notes] [varbinary](1000) NULL,--alter(varchar->varbinary)

[BindingMail] [varchar](50) NULL,--add column

[ULR] [varchar](50) NULL,[CType] [tinyint] NULL,[InsertTime] [datetime] NULL,CONSTRAINT [PK_LoginsInfo] PRIMARY KEY CLUSTERED([Id] ASC)

)GO

ALTER TABLE [dbo].[LoginsInfo] ADD CONSTRAINT [DF_LoginsInfo_InserTime] DEFAULT (getdate()) FOR [InsertTime]

GO

View Code

创建Database Master Key,并备份master_key

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

USEUestDB;GO

--数据库主密钥创建时默认使用Service Master Key和CREATE MASTER KEY中的密码加密

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'gK#3hbQKDFQY0oF';GO

--Backup the DatabaseMasterKey

BACKUP MASTER KEY TO FILE = 'D:\SQL2012\UestDBMasterKey.bak' ENCRYPTION BY PASSWORD = 'masterkeybakpwd';GO

View Code

创建非对称密钥,只指定了算法,没有指定PASSWORD子句,默认会使用Database Master Key加密私钥,这也是前面要创建Database Master Key的原因。接着创建对称密钥,使用前面的非对称密钥来加密,注意指定KEY_SOURCE和IDENTITY_VALUE

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

--Create an asymmetric key to protect the new symmetric key

CREATE ASYMMETRIC KEY UestAsymmetricKey --名称

--AUTHORIZATION Uest --所有者(数据库用户、数据库角色)

WITH ALGORITHM = RSA_2048 --算法--没有指定PASSWORD子句,则用数据库master key加密私钥--Create a symmetric key, protected by the asymmetric key

CREATE SYMMETRIC KEY UestSymmetricKey --名称

WITH KEY_SOURCE ='pass_phrase', --derive the key

ALGORITHM = TRIPLE_DES, --算法

IDENTITY_VALUE = 'identity_phrase' --generate a GUID

ENCRYPTION BY ASYMMETRIC KEY UestAsymmetricKey;--加密机制

View Code

使用对称密钥对数据进行加密

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

--打开对称密钥

OPEN SYMMETRIC KEYUestSymmetricKey

DECRYPTIONBY ASYMMETRIC KEYUestAsymmetricKeyINSERT INTOLoginsInfo(Item,LoginName,PassWords,Notes,BindingMail,ULR,CType)VALUES ('QQ', '1234567',EncryptByKey(Key_GUID('UestSymmetricKey'), 'Pass1')

,EncryptByKey(Key_GUID('UestSymmetricKey') ,'The first and the last letter is capitalized')

,'1234567@qq.com','http://qzone.qq.com/',1);--关闭对称密钥

CLOSE SYMMETRIC KEY UestSymmetricKey;

View Code

查看原始数据和解密数据

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

--查看数据

OPEN SYMMETRIC KEYUestSymmetricKey

DECRYPTIONBY ASYMMETRIC KEYUestAsymmetricKeySELECTId, Item, LoginName,CONVERT(VARCHAR, DecryptByKey(PassWords)) ASPassWords,CONVERT(VARCHAR, DecryptByKey(Notes)) ASNotes,

BindingMail,ULR,CtypeFROMLoginsInfo;CLOSE SYMMETRIC KEY UestSymmetricKey;

View Code

3fefc23805a3806bdf224210cfe45285.png

从结果可以看到存储在表中的PassWords字段已加密,需使用对应的密钥解密才能看到真实数据。

列数据加密如何迁移

假如现在需要将LoginsInfo表中的数据导入到另一个库/另一个实例下的一张数据表中,导过去后如何查看真实数据?

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

DROP TABLEDBA_Monitor.dbo.LoginsInfoSELECT *

INTODBA_Monitor.dbo.LoginsInfoFROM LoginsInfo

View Code

可以通过导入/导出、select...into...等多种方式将数据转移到其他表。用源代码在目标数据库创建相同的非对称密钥和对称密钥

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

USEDBA_Monitor;GO

--数据库主密钥创建时默认使用Service Master Key和CREATE MASTER KEY中的密码加密

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'gK#3hbQKDFQY0oF';GO

--Create an asymmetric key to protect the new symmetric key

CREATE ASYMMETRIC KEY UestAsymmetricKey --名称

--AUTHORIZATION Uest --所有者(数据库用户、数据库角色)

WITH ALGORITHM = RSA_2048 --算法--没有指定PASSWORD子句,则用数据库master key加密私钥--Create a symmetric key, protected by the asymmetric key

CREATE SYMMETRIC KEY UestSymmetricKey --名称

WITH KEY_SOURCE ='pass_phrase', --derive the key

ALGORITHM = TRIPLE_DES, --算法

IDENTITY_VALUE = 'identity_phrase' --generate a GUID

ENCRYPTION BY ASYMMETRIC KEY UestAsymmetricKey;--加密机制

View Code

MASTER KEY中的PASSWORD不一定要和原来的一样,但是对称密钥中的KEY_SOURCE和IDENTITY_VALUE必须与原来的保持一样。查看目标表中的数据

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

USEDBA_Monitor;GO

--查看数据

OPEN SYMMETRIC KEYUestSymmetricKey

DECRYPTIONBY ASYMMETRIC KEYUestAsymmetricKeySELECTId, Item, LoginName,CONVERT(VARCHAR, DecryptByKey(PassWords)) ASPassWords,CONVERT(VARCHAR, DecryptByKey(Notes)) ASNotes,

BindingMail,ULR,CtypeFROMLoginsInfo;CLOSE SYMMETRIC KEY UestSymmetricKey;

View Code

d25e6685e574c6f319419a7cfe5cda59.png

至此在新环境中已经能够正常查看加密数据。

修改Database Master Key、非对称密钥和对称密钥

Database Master Key的修改和还原

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

--重新生成数据库主密钥

ALTER MASTER KEY REGENERATE WITH ENCRYPTION BY PASSWORD ='password'

GO

--删除Service Master Key的加密

ALTER MASTER KEY DROP ENCRYPTION BY SERVICE MASTER KEY--执行后,任何数据库主密钥的修改需要使用OPEN MASTER KEY访问--使用密码打开数据库主密钥

OPEN MASTER KEY DECRYPTION BY PASSWORD = 'password'

--重新应用Service Master Key的加密

ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY--执行后,数据库主密钥不再需要被显式打开或关闭,拥有足够许可(如sysadmin)的用户自动使用数据库主密钥解密--关闭数据库主密钥

CLOSE MASTER KEY

--Restore the DatabaseMasterKey

RESTORE MASTER KEY FROM FILE='D:\SQL2012\UestDBMasterKey.bak'DECRYPTIONBY PASSWORD ='masterkeybakpwd'--备份数据库主密钥时指定的密码

ENCRYPTION BY PASSWORD ='openpassword'--还原后数据库主密钥使用的密码(如果删除Service Master Key,则需使用此密码打开数据库主密钥)

GO

View Code

修改非对称密钥

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

/****修改非对称密钥****/

--修改私钥加密方式

ALTER ASYMMETRIC KEY UestAsymmetricKey--要修改的密钥名称

WITH PRIVATE KEY --私钥

(ENCRYPTION BY PASSWORD = 'AsymPass!')--指定密码加密私钥;执行后,与数据库master key就没有关联,此时drop master key不会报错

--查看数据

OPEN SYMMETRIC KEYUestSymmetricKey

DECRYPTIONBY ASYMMETRIC KEYUestAsymmetricKeyWITH PASSWORD ='AsymPass!';--先用私钥密码打开对称密钥

SELECTId, Item, LoginName,CONVERT(VARCHAR, DecryptByKey(PassWords)) ASPassWords,

Notes,ULR,CtypeFROMLoginsInfo;CLOSE SYMMETRIC KEYUestSymmetricKey;--修改私钥密码

ALTER ASYMMETRIC KEY UestAsymmetricKey--要修改的密钥名称

WITH PRIVATE KEY --私钥

(ENCRYPTION BY PASSWORD = 'NewAsymPass',--指定新密码

DECRYPTION BY PASSWORD = 'AsymPass!')--旧密码是用来解密的

--查看数据

OPEN SYMMETRIC KEYUestSymmetricKey

DECRYPTIONBY ASYMMETRIC KEYUestAsymmetricKeyWITH PASSWORD ='NewAsymPass';--先用私钥密码打开对称密钥

SELECTId, Item, LoginName,CONVERT(VARCHAR, DecryptByKey(PassWords)) ASPassWords,

Notes,ULR,CtypeFROMLoginsInfo;CLOSE SYMMETRIC KEY UestSymmetricKey;

View Code

修改对称密钥

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

/****修改对称密钥的加密方式****/

--先用私钥密码打开对称密钥

OPEN SYMMETRIC KEYUestSymmetricKey

DECRYPTIONBY ASYMMETRIC KEYUestAsymmetricKeyWITH PASSWORD ='NewAsymPass';--打开之后,先增加密码加密,取代原密钥

ALTER SYMMETRIC KEYUestSymmetricKeyADD ENCRYPTION BY PASSWORD ='SysPass!'

--再删除非对称密钥加密

ALTER SYMMETRIC KEYUestSymmetricKeyDROP ENCRYPTION BY ASYMMETRIC KEY UestAsymmetricKey --执行后,与非对称密钥没有关联,此时DROP ASYMMETRIC KEY不会报错--完成操作后,关闭对称密钥

CLOSE SYMMETRIC KEYUestSymmetricKey--查看数据

OPEN SYMMETRIC KEYUestSymmetricKey

DECRYPTIONBY PASSWORD ='SysPass!';--直接用密码打开对称密钥

SELECTId, Item, LoginName,CONVERT(VARCHAR, DecryptByKey(PassWords)) ASPassWords,

Notes,ULR,CtypeFROMLoginsInfo;CLOSE SYMMETRIC KEY UestSymmetricKey;

View Code

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

--*** Clean up ***--****************

USEDBA_MonitorGO

DROP SYMMETRIC KEYUestSymmetricKeyDROP ASYMMETRIC KEYUestAsymmetricKeyDROP MASTER KEY

GO

USEmaster;GO

IF DB_ID('UestDB') IS NOT NULL DROP DATABASEUestDB;GO

--Can't turn off TDE in tempdb once it is on

DROPCERTIFICATE UestDBTDECert;GO

DROP MASTER KEY;GO

View Code

此部分主要是查看Database Master Key、非对称密钥和对称密钥的加密方式

这篇关于mysql 加密 tde_TDE与列级数据加密的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/428356

相关文章

MySQL 日期时间格式化函数 DATE_FORMAT() 的使用示例详解

《MySQL日期时间格式化函数DATE_FORMAT()的使用示例详解》`DATE_FORMAT()`是MySQL中用于格式化日期时间的函数,本文详细介绍了其语法、格式化字符串的含义以及常见日期... 目录一、DATE_FORMAT()语法二、格式化字符串详解三、常见日期时间格式组合四、业务场景五、总结一、

mysql线上查询之前要性能调优的技巧及示例

《mysql线上查询之前要性能调优的技巧及示例》文章介绍了查询优化的几种方法,包括使用索引、避免不必要的列和行、有效的JOIN策略、子查询和派生表的优化、查询提示和优化器提示等,这些方法可以帮助提高数... 目录避免不必要的列和行使用有效的JOIN策略使用子查询和派生表时要小心使用查询提示和优化器提示其他常

grom设置全局日志实现执行并打印sql语句

《grom设置全局日志实现执行并打印sql语句》本文主要介绍了grom设置全局日志实现执行并打印sql语句,包括设置日志级别、实现自定义Logger接口以及如何使用GORM的默认logger,通过这些... 目录gorm中的自定义日志gorm中日志的其他操作日志级别Debug自定义 Loggergorm中的

MySQL InnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据

《MySQLInnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据》mysql的ibdata文件被误删、被恶意修改,没有从库和备份数据的情况下的数据恢复,不能保证数据库所有表数据... 参考:mysql Innodb表空间卸载、迁移、装载的使用方法注意!此方法只适用于innodb_fi

mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据

《mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据》文章主要介绍了如何从.frm和.ibd文件恢复MySQLInnoDB表结构和数据,需要的朋友可以参... 目录一、恢复表结构二、恢复表数据补充方法一、恢复表结构(从 .frm 文件)方法 1:使用 mysq

mysql8.0无备份通过idb文件恢复数据的方法、idb文件修复和tablespace id不一致处理

《mysql8.0无备份通过idb文件恢复数据的方法、idb文件修复和tablespaceid不一致处理》文章描述了公司服务器断电后数据库故障的过程,作者通过查看错误日志、重新初始化数据目录、恢复备... 周末突然接到一位一年多没联系的妹妹打来电话,“刘哥,快来救救我”,我脑海瞬间冒出妙瓦底,电信火苲马扁.

golang获取prometheus数据(prometheus/client_golang包)

《golang获取prometheus数据(prometheus/client_golang包)》本文主要介绍了使用Go语言的prometheus/client_golang包来获取Prometheu... 目录1. 创建链接1.1 语法1.2 完整示例2. 简单查询2.1 语法2.2 完整示例3. 范围值

SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)

《SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)》本文介绍了如何在SpringBoot项目中使用Jasypt对application.yml文件中的敏感信息(如数... 目录SpringBoot使用Jasypt对YML文件配置内容进行加密(例:数据库密码加密)前言一、J

MySQL进阶之路索引失效的11种情况详析

《MySQL进阶之路索引失效的11种情况详析》:本文主要介绍MySQL查询优化中的11种常见情况,包括索引的使用和优化策略,通过这些策略,开发者可以显著提升查询性能,需要的朋友可以参考下... 目录前言图示1. 使用不等式操作符(!=, <, >)2. 使用 OR 连接多个条件3. 对索引字段进行计算操作4

MySQL表锁、页面锁和行锁的作用及其优缺点对比分析

《MySQL表锁、页面锁和行锁的作用及其优缺点对比分析》MySQL中的表锁、页面锁和行锁各有特点,适用于不同的场景,表锁锁定整个表,适用于批量操作和MyISAM存储引擎,页面锁锁定数据页,适用于旧版本... 目录1. 表锁(Table Lock)2. 页面锁(Page Lock)3. 行锁(Row Lock