SQL Server 加密案例解析

来源:https://www.cnblogs.com/chenmh/archive/2018/01/22/8309176.html
-Advertisement-
Play Games

一、概述 加密是一種安全措施,有時候甚至是法律要求。作為攻破Windows系統的最後一道防線,通過加密可以保證在沒有密鑰的情況下獲取備份或者物理介質變得毫無意義。 二、概念 加密層次結構 加密層次結構的每一層是如何對它下麵的一層進行加密的,並且顯示了最常用的加密配置。對層次結構的開始進行的訪問通常受 ...


一、概述

加密是一種安全措施,有時候甚至是法律要求。作為攻破Windows系統的最後一道防線,通過加密可以保證在沒有密鑰的情況下獲取備份或者物理介質變得毫無意義。

 

二、概念

加密層次結構

加密層次結構的每一層是如何對它下麵的一層進行加密的,並且顯示了最常用的加密配置。對層次結構的開始進行的訪問通常受密碼保護。SQL Server 用分層加密和密鑰管理基礎結構來加密數據。每一層都使用證書、非對稱密鑰和對稱密鑰的組合對它下麵的一層進行加密。非對稱密鑰和對稱密鑰可以存儲在 SQL Server 之外的可擴展密鑰管理 (EKM) 模塊中。

註意:

  • 為了獲得最佳性能,使用對稱密鑰(而不是證書或非對稱密鑰)加密數據。

  • 資料庫主密鑰受服務主密鑰保護。 服務主密鑰由 SQL Server 安裝程式創建,並且使用 Windows 數據保護 API (DPAPI) 進行加密。

  • 堆疊其他層的其他加密層次結構是可能的。

  • 可擴展密鑰管理 (EKM) 模塊將對稱密鑰或非對稱密鑰保存在 SQL Server 的外部。

  • 透明數據加密 (TDE) 必須使用稱為資料庫加密密鑰的對稱密鑰,該密鑰受由 master 資料庫的資料庫主密鑰保護的證書保護,或者受存儲在 EKM 中的非對稱密鑰保護。

  • 服務主密鑰和所有資料庫主密鑰是對稱密鑰。

1.服務主密鑰(Service Master Key)

每一個實例只有一個服務主密鑰,服務主密鑰用於加密資料庫主密鑰,服務主密鑰為 SQL Server 加密層次結構的根。服務主密鑰是首次需要它來加密其他密鑰時自動生成的。預設情況下,服務主密鑰使用 Windows 數據保護 API 和本地電腦密鑰進行加密。只有創建服務主密鑰的 Windows 服務帳戶或有權訪問服務帳戶名稱和密碼的主體能夠打開服務主密鑰。

---備份服務主密鑰
BACKUP SERVICE MASTER KEY TO FILE = 'D:\DECRYPTION\ServerMasterKey' 
    ENCRYPTION BY PASSWORD = 'password'

----還原服務主密鑰
RESTORE SERVICE MASTER KEY FROM FILE = 'D:\DECRYPTION\ServerMasterKey'
    DECRYPTION BY PASSWORD = 'password' 
    [FORCE];   ----即使存在數據丟失的風險,也要強制替換服務主密鑰。

註意:
1.服務主密鑰直接或間接地保護樹中的所有其他密鑰。如果在強制的還原過程中不能對某個相關密鑰進行解密,則由該密鑰所保護的數據便會丟失。
2.重新生成加密層次結構是一種消耗大量資源的操作。您應當將該操作安排在資源需求較低的時段進行。
3.當還原服務主密鑰時,SQL Server 將對所有已使用當前服務主密鑰加密的密鑰和機密內容進行解密,然後使用從備份文件中載入的服務主密鑰對這些密鑰和機密內容進行加密。

2.資料庫主密鑰

資料庫主密鑰創建於對應資料庫下,具體的保護對象可以參考下麵的資料庫範圍的安全對象。如果要對資料庫備份或者透明資料庫加密那麼需要將服務主密鑰創建於Master資料庫下。

----1.創建資料庫主密鑰
USE [master]
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'MasterKey'
---2.刪除資料庫主密鑰
DROP MASTER KEY

---3.備份資料庫主密鑰
/*
主密鑰必須為打開狀態,因此在備份主密鑰之前應對其進行解密。如果主密鑰使用服務主密鑰進行加密,則不必顯式打開。但如果主密鑰僅使用密碼進行加密,則必須顯式打開。
建議在創建主密鑰之後立即對其進行備份,並存儲於另外一個安全的位置中。
*/

OPEN MASTER KEY DECRYPTION BY PASSWORD = 'MasterKey'; ---打開資料庫主密鑰,這裡的密碼為創建主密鑰時設的密碼
BACKUP MASTER KEY TO FILE = 'D:\DECRYPTION\MasterKey' -----主密鑰私鑰文件
    ENCRYPTION BY PASSWORD = 'MasterKey';             -----加密主密鑰私鑰文件
GO 
---4.還原資料庫主密鑰
/*
還原主密鑰之後,SQL Server 會對使用當前活動的主密鑰加密的所有密鑰進行解密,然後使用還原後的主密鑰對這些密鑰進行加密。這種大量消耗資源的操作應當安排在資源需求較低的時段執行。如果當前的資料庫主密鑰未打開或無法打開,或者無法對任何使用該主密鑰加密的密鑰進行解密,則還原操作將失敗。
如果當前資料庫中沒有主密鑰,則 RESTORE MASTER KEY 將創建一個主密鑰。新的主密鑰不會自動使用服務主密鑰進行加密。
請僅在主密鑰無法恢復或解密失敗時,才使用 FORCE 選項。僅由不可恢復密鑰加密的信息將會丟失。
如果主密鑰通過服務主密鑰進行加密,則還原後的主密鑰也通過該服務主密鑰進行加密(當前伺服器)。
*/
RESTORE MASTER KEY  
FROM FILE = 'C:\DECRYPTION\MasterKey' 
DECRYPTION BY PASSWORD = N'MasterKey'  
ENCRYPTION BY PASSWORD = 'MasterKey123'  ---加密導出的主密鑰
--force;        ----指定即使當前資料庫主密鑰未打開,或者 SQL Server 無法對使用該主密鑰加密的某些私鑰進行解密,RESTORE 過程也應繼續執行。
GO 

---5.打開資料庫主密鑰
OPEN MASTER KEY DECRYPTION BY PASSWORD = N'MasterKey123'  

GO

註意:

1.資料庫主密鑰是指用於保護證書私鑰的對稱密鑰以及資料庫中存在的非對稱密鑰。當創建主密鑰時,會使用 Triple DES 演算法以及用戶提供的密碼對其進行加密。
2.請使用服務主密鑰對該主密鑰的副本進行加密,並將副本存儲在資料庫和 master 中。通常,每當主密鑰更改時,便會在不進行提示的情況下更新存儲在 master 中的副本。
3.在當前伺服器下創建的資料庫主密鑰預設就使用了服務主密鑰加密和自動解密,不必使用 OPEN MASTER KEY 語句。如果還原到了新的伺服器那麼服務主密鑰則不存在.必須使用 OPEN MASTER KEY 語句解密資料庫主密鑰。一旦資料庫主密鑰解密後,通過使用 ALTER MASTER KEY 語句向伺服器提供資料庫主密鑰(使用服務主密鑰加密)的副本,即可擁有將來啟用自動解密的選項。
4.通過使用帶 DROP ENCRYPTION BY SERVICE MASTER KEY 選項的 ALTER MASTER KEY 語句,可從自動密鑰管理中排除特定資料庫的資料庫主密鑰。然後,必須顯式打開帶密碼的資料庫主密鑰。
5.資料庫主密鑰使用公鑰對證書、非對稱密鑰進行加密,使用私鑰進行解密,如果在當前創建的伺服器上預設自動解密,如果還原到一臺新的服務上時可能需要使用OPEN MASTER KEY進行解密。

3.證書

 證書使用公鑰對安全對象進行加密,使用私鑰進行解密,預設證書存在就自動解密。

----1.創建自我簽名的證書,使用資料庫主密鑰進行加密證書
USE MASTER;
GO
CREATE CERTIFICATE MyCerts 
   WITH SUBJECT = 'BackDB Records', 
   EXPIRY_DATE = '10/31/2099';            ----證書過期時間,不指定開始時間預設開始時間為當前時間
GO

---使用密碼進行加密證書
USE MASTER;
GO
CREATE CERTIFICATE CertsByPW 
   ENCRYPTION BY PASSWORD = 'CertsByPW111'
   WITH SUBJECT = 'BackDB Records', 
   EXPIRY_DATE = '10/31/2099';            ----證書過期時間,不指定開始時間預設開始時間為當前時間
GO

----2.備份證書
----警告: 用於對資料庫加密密鑰進行加密的證書尚未備份。應當立即備份該證書以及與該證書關聯的私鑰。如果該證書不可用,或者您必須在另一臺伺服器上還原或附加資料庫,則必須對該證書和私鑰均進行備份,否則將無法打開該資料庫。
BACKUP CERTIFICATE MyCerts TO FILE = 'D:\DECRYPTION\MyCerts' ----證書文件
    WITH PRIVATE KEY ( FILE = 'D:\DECRYPTION\MyCertsKey' ,   ----證書私鑰文件
                       ENCRYPTION BY PASSWORD = 'MyCerts123' ); ----對私鑰文件加密
GO

---備份使用私鑰進行加密的證書,必須先對私鑰進行解密
BACKUP CERTIFICATE CertsByPW TO FILE = 'D:\DECRYPTION\MyCerts' ----證書文件
    WITH PRIVATE KEY ( DECRYPTION BY PASSWORD = 'CertsByPW111',----解密證書
                       FILE = 'D:\DECRYPTION\MyCertsKey' ,   ----證書私鑰文件
                       ENCRYPTION BY PASSWORD = 'MyCerts123' ); ----對私鑰文件加密
GO

----3.通過備份文件創建證書,還原證書,
CREATE CERTIFICATE MyCerts FROM FILE = 'C:\DECRYPTION\MyCerts' ----證書文件
    WITH PRIVATE KEY ( FILE = 'C:\DECRYPTION\MyCertsKey' ,    ----證書私鑰文件
    DECRYPTION BY PASSWORD = 'MyCerts123' );                  ----解密私鑰文件


---4.刪除證書
DROP CERTIFICATE MyCerts 

註意:

當使用資料庫主密鑰對私鑰進行加密時,不需要 ENCRYPTION BY PASSWORD 選項。

只有在使用密碼對私鑰進行加密時,才使用該選項。

如果未指定密碼,則使用資料庫主密鑰對證書的私鑰進行加密。 如果資料庫主密鑰無法打開,則省略該子句會導致錯誤。

4.非對稱密鑰

“非對稱密鑰”是資料庫級的安全對象實體。該實體的預設格式包含公鑰和私鑰。當未使用 FROM 子句執行時,CREATE ASYMMETRIC KEY 會生成新的密鑰對。當使用 FROM 子句執行時,CREATE ASYMMETRIC KEY 會從文件中導入密鑰對,或從程式集中導入公鑰。
預設情況下,私鑰受資料庫主密鑰保護。如果尚未創建任何資料庫主密鑰,則需要使用密碼保護私鑰。如果不存在資料庫主密鑰,則可以選擇性地使用密碼。

通常使用RSA加密演算法,RSA_512、RSA_1024、RSA_2048。

---1.創建非對稱密鑰;非對稱密鑰可以由密碼、資料庫主密鑰、EKM模塊加密
--使用密碼加密
CREATE ASYMMETRIC KEY AsymmetricByPW
    WITH ALGORITHM = RSA_2048   ---使用RSA_2048加密演算法
    ENCRYPTION BY PASSWORD = 'AsymmetricByPW111'; 
GO
--2.通過文件創建非對稱密鑰
CREATE ASYMMETRIC KEY AsymmetricByFile 
    AUTHORIZATION Christina ----授予Christina用戶使用該非對稱密鑰
    FROM FILE = 'c:\PacSales\Managers\ChristinaCerts.tmp'  
    ENCRYPTION BY PASSWORD = 'AsymmetricByFile111';
GO
---3.使用資料庫主密鑰加密
CREATE ASYMMETRIC KEY AsymmetricByMasterKey
    WITH ALGORITHM = RSA_2048;   ---使用RSA_2048加密演算法

---4.刪除非對稱密鑰
DROP ASYMMETRIC KEY AsymmetricByPW
GO

5.對稱密鑰

創建對稱密鑰時,必須至少使用以下項之一來對該對稱密鑰進行加密:證書、密碼、對稱密鑰、非對稱密鑰或 PROVIDER。可使用上述每種類型中的多項對密鑰進行加密。換言之,可以同時使用多個證書、密碼、對稱密鑰以及非對稱密鑰對單個對稱密鑰進行加密

通常使用AES演算法,有AES_128、AES_192、AES_256

 

--1.創建對稱密鑰,對稱密鑰可以由密碼、非對稱密鑰、對稱密鑰、EKM模塊加密
---使用密碼加密
CREATE SYMMETRIC KEY SymmetricByPW
    WITH ALGORITHM = AES_256
    ENCRYPTION BY PASSWORD = 'SymmetricByPW111';
GO
--註意:當使用密碼(而不是資料庫主密鑰的公鑰)對對稱密鑰進行加密時,便會使用 TRIPLE DES 加密演算法。因此,用強加密演算法(如 AES)創建的密鑰本身受較弱演算法的保護。
---2.使用證書加密
CREATE SYMMETRIC KEY SymmetricByCert
    WITH ALGORITHM = AES_256
    ENCRYPTION BY CERTIFICATE MyCerts;

---3.刪除非對稱密鑰
DROP SYMMETRIC KEY TestSymmetric
GO

三、安全對象

安全對象是 SQL Server 資料庫引擎授權系統控制對其進行訪問的資源。通過創建可以為自己設置安全性的名為“範圍”的嵌套層次結構,可以將某些安全對象包含在其他安全對象中。安全對象範圍有伺服器、資料庫和架構。

1.安全對象範圍:伺服器

包含以下安全對象:

  • 端點
  • 登錄帳戶
  • 資料庫

2.安全對象範圍:資料庫

包含以下安全對象:

  • 用戶
  • 角色
  • 應用程式角色
  • 程式集
  • 消息類型
  • 路由
  • 服務
  • 遠程服務綁定
  • 全文目錄
  • 證書
  • 非對稱密鑰
  • 對稱密鑰
  • 約定
  • 架構

3.安全對象範圍:架構

包含以下安全對象:

  • 類型
  • XML 架構集合
  • 對象

對象

下麵是對象類的成員:

    • 聚合
    • 約束
    • 函數
    • 過程
    • 隊列
    • 統計信息
    • 同義詞
    • 視圖  

四、案例 

案例1.備份加密

 通過使用證書加密備份,如果需要在新的伺服器上還原備份,先還原資料庫主密鑰和證書,然後就可以自動解密還原備份。

--1.備份資料庫主密鑰
BACKUP MASTER KEY TO FILE = 'D:\DECRYPTION\MasterKey' -----主密鑰私鑰文件
    ENCRYPTION BY PASSWORD = 'MasterKey';             -----加密主密鑰私鑰文件
GO 
--2.備份證書
BACKUP CERTIFICATE MyCerts TO FILE = 'D:\DECRYPTION\MyCerts' ----證書文件
    WITH PRIVATE KEY ( FILE = 'D:\DECRYPTION\MyCertsKey' ,   ----證書私鑰文件
                       ENCRYPTION BY PASSWORD = 'MyCerts123' ); ----對私鑰文件加密
GO

--3.備份資料庫
USE MASTER
GO
BACKUP DATABASE [EncryDb]    
TO DISK = N'D:\BackDB\EncryDb.bak'    
WITH  COMPRESSION, stats = 10,   
    ENCRYPTION     
    (    
    ALGORITHM = AES_256,  
    SERVER CERTIFICATE = MyCerts
    )  
GO 
---4.在新伺服器上還原資料庫主密鑰
USE MASTER
GO
RESTORE MASTER KEY  
FROM FILE = 'C:\DECRYPTION\MasterKey' 
DECRYPTION BY PASSWORD = N'MasterKey'    ---解密主密鑰文件
ENCRYPTION BY PASSWORD = N'MasterKey123'  ---加密導出的主密鑰
--force;        ----指定即使當前資料庫主密鑰未打開,或者 SQL Server 無法對使用該主密鑰加密的某些私鑰進行解密,RESTORE 過程也應繼續執行。
GO 
---5.在新伺服器上還原證書
USE MASTER
GO
---需要先打開資料庫主密鑰
OPEN MASTER KEY DECRYPTION BY PASSWORD = N'MasterKey123'  
GO 
CREATE CERTIFICATE MyCerts FROM FILE = 'C:\DECRYPTION\MyCerts' ----證書文件
    WITH PRIVATE KEY ( FILE = 'C:\DECRYPTION\MyCertsKey' ,    ----證書私鑰文件
    DECRYPTION BY PASSWORD = 'MyCerts123' );                  ----解密私鑰文件

---6.在新伺服器上還原資料庫
USE [master]  
GO  
OPEN MASTER KEY DECRYPTION BY PASSWORD = N'MasterKey123'  
GO 
RESTORE DATABASE [EncryDb]  
FROM  DISK = N'C:\DECRYPTION\EncryDb.bak'   
WITH  FILE = 1,  
MOVE N'EncryDb' TO N'C:\DECRYPTION\EncryDb.mdf',     
MOVE N'EncryDb_log' TO N'C:\DECRYPTION\EncryDb_log.ldf',    
NOUNLOAD,  STATS = 5  
GO 

註意:在master資料庫中創建資料庫主密鑰和證書。

如果沒有還原資料庫主密鑰和證書直接還原資料庫報錯如下

案例2.TDE透明資料庫加密

 通過使用證書加密資料庫

 

步驟操作如下:

    • 創建主密鑰
    • 創建或獲取由主密鑰保護的證書
    • 創建資料庫加密密鑰並通過此證書保護該密鑰
    • 將資料庫設置為使用加密
USE EncryDb;
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_128
ENCRYPTION BY SERVER CERTIFICATE MyCerts;
GO
USE EncryDb;
GO
---啟用資料庫加密
ALTER DATABASE EncryDb
SET ENCRYPTION ON;
GO
USE EncryDb;
GO
---禁用資料庫加密
ALTER DATABASE EncryDb
SET ENCRYPTION OFF;
GO

1.“透明數據加密”(TDE) 可對數據和日誌文件執行實時 I/O 加密和解密。這種加密使用資料庫加密密鑰 (DEK),該密鑰存儲在資料庫引導記錄中以供恢復時使用。DEK 是使用存儲在伺服器的 master 資料庫中的證書保護的對稱密鑰,或者是由 EKM 模塊保護的非對稱密鑰。TDE 保護“處於休眠狀態”的數據,即數據和日誌文件。它提供了遵從許多法律、法規和各個行業建立的準則的能力。軟體開發人員籍此可以使用 AES 和 3DES 加密演算法來加密數據,且無需更改現有的應用程式。
2.啟用 TDE 時,應該立即備份證書和與證書相關聯的私鑰。如果證書變為不可用,或者如果必須在另一臺伺服器上還原或附加資料庫,則必須同時具有證書和私鑰的備份,否則將無法打開該資料庫。即使不再對資料庫啟用 TDE,也應該保留加密證書或非對稱密鑰。即使資料庫沒有加密,資料庫加密密鑰可能也保留在資料庫中,執行某些操作時可能需要訪問這些加密密鑰。
3.資料庫文件的加密在頁級執行。已加密資料庫中的頁在寫入磁碟之前會進行加密,在讀入記憶體時會進行解密。TDE 不會增加已加密資料庫的大小。

註意:在master資料庫中創建資料庫主密鑰和證書。

測試在新的資料庫中還原TDE透明加密資料庫

---備份資料庫
USE MASTER
GO
BACKUP DATABASE [EncryDb]    
TO DISK = N'C:\DECRYPTION\EncryDb0122.bak'    
WITH  COMPRESSION, stats = 10  

---在新伺服器中還原資料庫主密鑰
USE MASTER
GO
RESTORE MASTER KEY  
FROM FILE = 'C:\DECRYPTION\MasterKey' 
DECRYPTION BY PASSWORD = N'MasterKey'    ---解密主密鑰文件
ENCRYPTION BY PASSWORD = N'MasterKey123'  ---加密導出的主密鑰
--force;        ----指定即使當前資料庫主密鑰未打開,或者 SQL Server 無法對使用該主密鑰加密的某些私鑰進行解密,RESTORE 過程也應繼續執行。
GO 
---在新伺服器上還原證書
USE MASTER
GO
---需要先打開資料庫主密鑰
OPEN MASTER KEY DECRYPTION BY PASSWORD = N'MasterKey123'  
GO 
CREATE CERTIFICATE MyCerts FROM FILE = 'C:\DECRYPTION\MyCerts' ----證書文件
    WITH PRIVATE KEY ( FILE = 'C:\DECRYPTION\MyCertsKey' ,    ----證書私鑰文件
    DECRYPTION BY PASSWORD = 'MyCerts123' );                  ----解密私鑰文件


---還原備份
USE [master]  
GO  
OPEN MASTER KEY DECRYPTION BY PASSWORD = N'MasterKey123'  
GO 
RESTORE DATABASE [EncryDb_20180122]  
FROM  DISK = N'C:\DECRYPTION\EncryDb0122.bak'   
WITH  FILE = 1,  
MOVE N'EncryDb' TO N'C:\DECRYPTION\EncryDb0122.mdf',     
MOVE N'EncryDb_log' TO N'C:\DECRYPTION\EncryDb0122_log.ldf',    
NOUNLOAD,  STATS = 5  
GO 

註意:經測試發現只有同資料庫版本可以還原成功,在搞版本中還原提示會提示錯誤頁,比如2014版本加密的資料庫在2016版本中還原保持如下:

案例3.存儲過程加密

在AS前增加WITH ENCRYPTION加密選項即可

USE EncryDb;
GO
CREATE PROCEDURE Sptest
WITH ENCRYPTION ---加密選項
AS
BEGIN


END

註意:
1.加密前先保留存儲副本,否則加密完再需要解密就很麻煩
2.加密過的存儲過程不影響修改、刪除,但是無法查看存儲過程的定義比如:sp_helptext、生成create語句、生成alter語句等。

案例4.數據列加密

CREATE DATABASE TestDb
GO
USE [TestDb]
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'MasterKey'
GO
---創建證書
CREATE CERTIFICATE MyCerts 
   WITH SUBJECT = 'BackDB Records', 
   EXPIRY_DATE = '10/31/2099';            ----證書過期時間,不指定開始時間預設開始時間為當前時間
GO
----創建對稱密鑰
CREATE SYMMETRIC KEY SymmetricByCert
    WITH ALGORITHM = AES_256
    ENCRYPTION BY CERTIFICATE MyCerts;

----創建測試表
USE TestDb;
GO
DROP TABLE Test
GO
CREATE TABLE Test
(Id INT NOT NULL,
Name NVARCHAR(30) NOT NULL,
EncryptionName varbinary(500) null
);
GO
INSERT INTO Test(Id,Name) VALUES(1,'aa'),(2,'bb');
GO

----加密列
OPEN SYMMETRIC KEY SymmetricByCert 
     DECRYPTION BY CERTIFICATE MyCerts;  
UPDATE Test
SET EncryptionName= EncryptByKey(Key_GUID('SymmetricByCert'), Name);  
GO

SELECT * FROM TEST

GO
---解密查詢
OPEN SYMMETRIC KEY SymmetricByCert 
     DECRYPTION BY CERTIFICATE MyCerts;  
select Id,
Name,
EncryptionName,
convert(nvarchar(30), DecryptByKey(EncryptionName)) ConvertEncryptionName  ----nvarchar(30)值和明文欄位類型長度保持一致 
from test;

註意:

1.加密列的數據類型必須是nvarchar數據類型,否則解密後的結果不會和明文一致。

2.解密過程定義的數據類型需要和明文的數據類型保持一致,包括長度也必須一致。

 

 

 

公鑰和私鑰的解釋參考:http://blog.csdn.net/tanyujing/article/details/17348321

加密參考:https://docs.microsoft.com/zh-cn/sql/relational-databases/security/encryption/encryption-hierarchy

使用對稱密鑰加密數據:https://docs.microsoft.com/zh-cn/sql/t-sql/functions/encryptbykey-transact-sql

 

 

 

備註:

    作者:pursuer.chen

    博客:http://www.cnblogs.com/chenmh

本站點所有隨筆都是原創,歡迎大家轉載;但轉載時必須註明文章來源,且在文章開頭明顯處給明鏈接,否則保留追究責任的權利。

《歡迎交流討論》

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 腳本主要用於redhat平臺安裝11g和12c軟體 依賴包檢查與安裝 用戶、組檢查與安裝 系統內核、用戶限制 防火牆、selinux關閉 註意,linux組腳本中只創建了dba,通常會創建oinstall和dba ################# # # #create : 2018/01/22 ...
  • Spark Streaming處於Spark生態技術棧中,可以和Spark Core和Spark SQL無縫整合;而Storm相對來說比較單一; (一)概述 Spark Streaming Spark Streaming是Spark的核心API的一個擴展,可以實現高吞吐量、具有容錯機制的實時流數據的 ...
  • # 幫助help create user;# 查看當前用戶select user();# 創建用戶create user 'egon'@'localhost' identified by '123';create user 'alex'@'%' identified by '123';create ...
  • 數據倉庫(Data Warehouse)是一個面向主題的(Subject Oriented)、集成的(Integrate)、相對穩定的(Non-Volatile)、反映歷史變化(Time Variant)的數據集合,用於支持管理決策。是OLTP類型的數據處理。 數據處理大致可以分成兩大類:聯機事務處 ...
  • 大數據(big data)是指“無法用現有的軟體工具提取、存儲、搜索、共用、分析和處理的海量的、複雜的數據集合”。業界通常用4個V(即Volume、Variety、Value、Velocity)來概括大數據的特征。下麵我們將對大數據這四種特征做簡要的解釋: Volume : 指代大型數據集,一般在1 ...
  • hadoop完全分散式模式搭建和hive安裝 簡介 Hadoop是用來處理大數據集合的分散式存儲計算基礎架構。可以使用一種簡單的編程模式,通過多台電腦構成的集群,分散式處理大數據集。hadoop作為底層,其生態環境很豐富。 hadoop基礎包括以下四個基本模塊: hadoop基礎功能庫:支持其他h ...
  • mongodb預設是不能遠程連接的,而且在linux安裝完你會發現,它的目錄極其簡單,連個配置文件都沒有. 我的mongodb的版本是3.6,目前最新的.https://www.mongodb.com/mongodb-3.6 百度了一下看是有配置文件: mongodb.conf. 又檢查了下目錄確實 ...
  • MongoDB在互聯網項目中使用越來越多,佈署在雲端Linux伺服器上的mongoDB資料庫,大多存在遠程維護不便的問題,開放27017埠又將導致安全隱患。有個折中的辦法就是使用基於web的客戶端管理軟體進行資料庫的日常維護,TreeDMS資料庫管理系統剛好就可以滿足這些功能要求,實現基於WEB方 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...