System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本申請涉及數據庫管理,尤其涉及一種mysql代理權限認證裝置、方法、設備及存儲介質。
技術介紹
1、mysql作為一種廣泛使用的關系數據庫管理系統,其提供了多種用戶認證插件,包括mysql_native_password和caching_sha2_password。mysql在8.0之后的版本中將默認的用戶認證插件設置從mysql_native_password切換到了caching_sha2_password。而caching_sha2_password由于其使用sha-256散列函數和可選的rsa密鑰對加密,提供了比傳統方法更高的安全性。
2、數據庫代理作為客戶端和數據庫服務器之間的中間層,也需要提供用戶認證能力。目前常見的數據庫代理提供用戶認證能力是用戶登陸數據庫代理時,數據庫代理直接將用戶的登錄請求轉發給mysql處理,數據庫代理本身不負責處理用戶認證,參考圖1。這會導致數據庫代理的連接池中的mysql連接與具體用戶綁定,使得連接池中的mysql連接難以被不同用戶復用。數據庫代理對于用戶的最重要作用之一就是mysql連接復用,所以這樣的用戶認證方案會使得“數據庫代理”難以提供它的連接復用能力。
技術實現思路
1、本專利技術針對為了解決現有技術中的至少一項缺點,提供了一種mysql代理用戶認證優化方法。
2、為實現上述目的,本申請采用以下技術方案:一種mysql代理權限認證裝置,其特征在于,配置于數據庫代理,包括:
3、mysql協議模塊,
4、認證數據緩存模塊,緩存從mysql數據庫中加載的用戶認證數據;
5、第一認證處理模塊,加載與mysql數據庫兼容的全流程身份驗證方法,采用全流程身份驗證方法與認證數據緩存模塊中緩存的用戶認證數據執行全流程身份驗證,同時在用戶通過全流程身份驗證方法第一次登錄成功后生成認證字符串哈希值并至認證數據緩存模塊緩存;
6、第二認證處理模塊,連接第一認證處理模塊,從認證數據緩存模塊獲取第一認證處理模塊產生的認證字符串哈希值緩存;響應于接收客戶端發送的認證字符串,與認證字符串哈希值緩存匹配,若匹配成功,則通過快速認證,若匹配失敗,則采用第一認證處理模塊執行全流程身份驗證方法。
7、作為優選方案,還包括:連接池模塊,存儲有高權限通用數據庫用戶賬號數據。
8、作為優選方案,所述認證數據緩存模塊在數據庫代理啟動時被配置,具體包括在代理進程中,初始化一key-value類型的內存數據結構作為認證數據緩存模塊,從mysql數據庫中加載的用戶認證數據存儲在代理進程的堆內存中。
9、作為優選方案,所述認證數據緩存模塊,被配置為定期和/或觸發式的緩存同步機制。
10、作為優選方案,所述第一認證處理模塊執行全流程身份驗證的方法,包括:
11、若已經建立tls安全連接,響應于客戶端發送的明文密碼;若否,則響應于客戶端發送的公鑰加密密碼,計算驗證接收到的密碼哈希值,如果匹配,則向客戶端發送全流程身份認證通過的消息。
12、本專利技術還提出一種mysql代理權限認證方法,應用于數據庫代理,包括以下步驟:
13、在數據庫代理啟動時,初始化一內存中的數據結構作為認證數據緩存模塊,加載mysql數據庫中已存在的用戶認證數據到所述認證數據緩存模塊中;
14、響應于客戶端發送的連接請求,生成隨機數據發送給客戶端;
15、響應于客戶端發送的基于隨機數得到的驗證數據,搜索認證數據緩存模塊中是否存在與驗證數據對應的緩存條目,若存在,則向客戶端發送快速認證通過消息;若不存在,向客戶端發送執行全流程身份驗證消息,執行數據庫代理的全流程身份驗證流程,并在全流程身份驗證過程中生成認證字符串哈希值并將認證字符串哈希值緩存至認證數據緩存模塊。
16、作為優選方案,數據庫代理與mysql數據庫通用的數據庫用戶賬號建立連接。
17、作為優選方案,初始化一內存中的數據結構作為認證數據緩存模塊,加載mysql數據庫中已存在的用戶認證數據到所述認證數據緩存模塊中的方法,包括:在代理進程中,初始化一key-value類型的內存數據結構作為認證數據緩存模塊,從mysql數據庫中加載的用戶認證數據存儲在代理進程的堆內存中。
18、本專利技術還提出一種電子設備,所述電子設備包括:至少一個處理器;以及
19、與所述至少一個處理器通信連接的存儲器;其中,所述存儲器存儲有可被所述至少一個處理器執行的計算機程序,所述計算機程序被所述至少一個處理器執行,以使所述至少一個處理器能夠執行mysql代理權限認證方法。
20、本專利技術還提出一種計算機可讀存儲介質,所述計算機可讀存儲介質存儲有計算機指令,所述計算機指令用于使處理器執行時實現mysql代理權限認證方法。
21、本專利技術具有如下有益效果:通過減少對數據庫服務器的直接認證請求,降低了服務器負載,提升了系統的處理速度和響應時間。設置的緩存機制使得系統更容易應對高并發的用戶認證請求,增強了系統的水平擴展能力。
本文檔來自技高網...【技術保護點】
1.一種MySQL代理權限認證裝置,其特征在于,配置于數據庫代理,包括:
2.根據權利要求1所述的一種MySQL代理權限認證裝置,其特征在于,還包括:連接池模塊,存儲有高權限的通用數據庫用戶賬號數據。
3.根據權利要求1所述的一種MySQL代理權限認證裝置,其特征在于,所述認證數據緩存模塊在數據庫代理啟動時被配置,具體包括在代理進程中,初始化一Key-Value類型的內存數據結構作為認證數據緩存模塊,從MySQL數據庫中加載的用戶認證數據存儲在代理進程的堆內存中。
4.根據權利要求1所述的一種MySQL代理權限認證裝置,其特征在于,所述認證數據緩存模塊,被配置為定期和/或觸發式的緩存同步機制。
5.根據權利要求1所述的一種MySQL代理權限認證裝置,其特征在于,所述第一認證處理模塊執行全流程身份驗證的方法,包括:
6.一種MySQL代理權限認證方法,其特征在于,應用于數據庫代理,包括以下步驟:
7.根據權利要求6所述的一種MySQL代理權限認證方法,其特征在于,數據庫代理與MySQL數據庫通用的數據庫用戶賬號
8.根據權利要求6所述的一種MySQL代理權限認證方法,其特征在于,初始化一內存中的數據結構作為認證數據緩存模塊,加載MySQL數據庫中已存在的用戶認證數據到所述認證數據緩存模塊中的方法,包括:在代理進程中,初始化一Key-Value類型的內存數據結構作為認證數據緩存模塊,從MySQL數據庫中加載的用戶認證數據存儲在代理進程的堆內存中。
9.一種電子設備,其特征在于,所述電子設備包括:
10.一種計算機可讀存儲介質,其特征在于,所述計算機可讀存儲介質存儲有計算機指令,所述計算機指令用于使處理器執行時實現權利要求6-8中任一項所述的MySQL代理權限認證方法。
...【技術特征摘要】
1.一種mysql代理權限認證裝置,其特征在于,配置于數據庫代理,包括:
2.根據權利要求1所述的一種mysql代理權限認證裝置,其特征在于,還包括:連接池模塊,存儲有高權限的通用數據庫用戶賬號數據。
3.根據權利要求1所述的一種mysql代理權限認證裝置,其特征在于,所述認證數據緩存模塊在數據庫代理啟動時被配置,具體包括在代理進程中,初始化一key-value類型的內存數據結構作為認證數據緩存模塊,從mysql數據庫中加載的用戶認證數據存儲在代理進程的堆內存中。
4.根據權利要求1所述的一種mysql代理權限認證裝置,其特征在于,所述認證數據緩存模塊,被配置為定期和/或觸發式的緩存同步機制。
5.根據權利要求1所述的一種mysql代理權限認證裝置,其特征在于,所述第一認證處理模塊執行全流程身份驗證的方法,包括:
6.一種mysql代...
【專利技術屬性】
技術研發人員:郁光輝,符炫煒,
申請(專利權)人:杭州云猿生數據有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。