本申請(qǐng)涉及計(jì)算機(jī)領(lǐng)域,尤其涉及一種數(shù)據(jù)庫訪問方法及設(shè)備。
背景技術(shù):
隨著信息技術(shù)的發(fā)展和數(shù)據(jù)應(yīng)用場景的增加,數(shù)據(jù)的訪問需求也呈現(xiàn)出明顯增加的趨勢(shì)。在企業(yè)中由于業(yè)務(wù)和運(yùn)維的需要,越來越多的人員需要獲得數(shù)據(jù)庫的訪問權(quán)限。一方面伴隨著不同的訪問需求會(huì)出現(xiàn)以下四種訪問行為控制:(1)用戶需要一直具有能夠訪問數(shù)據(jù)庫的持久性的訪問行為;(2)用戶只能在規(guī)定的預(yù)設(shè)時(shí)間段內(nèi)訪問數(shù)據(jù)庫的規(guī)定性的訪問行為,例如用戶只能在周一至周五的上午九點(diǎn)至下午六點(diǎn)可以訪問數(shù)據(jù)庫,并在其他時(shí)間段不能訪問數(shù)據(jù)庫;(3)用戶只能周期性的訪問數(shù)據(jù)庫一段預(yù)設(shè)時(shí)間段的周期性的訪問行為,例如用戶只能在每月一日的上午九點(diǎn)至十點(diǎn)訪問數(shù)據(jù)庫,其他時(shí)間不能訪問數(shù)據(jù)庫;(4)用戶被臨時(shí)授予了一段預(yù)設(shè)時(shí)間段可以訪問數(shù)據(jù)庫的臨時(shí)性的訪問行為,例如用戶臨時(shí)被授予本周一上午九點(diǎn)至下午六點(diǎn)可以訪問數(shù)據(jù)庫,其他時(shí)間不能訪問數(shù)據(jù)庫。另一方面,伴隨著不同的訪問需求會(huì)出現(xiàn)以下兩種訪問內(nèi)容控制:(1)用戶可以訪問數(shù)據(jù)庫中所有的表和字段的全局性的訪問內(nèi)容控制;(2)用戶只可以訪問數(shù)據(jù)庫中指定的表和字段的局部性的訪問內(nèi)容控制。如上所述,不同的訪問需求導(dǎo)致了不同的訪問行為控制和不同的訪問內(nèi)容控制。
現(xiàn)有技術(shù)中的訪問控制方案主要通過數(shù)據(jù)庫本身來實(shí)現(xiàn)。例如通過共用的數(shù)據(jù)庫賬號(hào)來滿足不同用戶對(duì)數(shù)據(jù)庫的不同訪問需求,若一旦共用的數(shù)據(jù)庫賬號(hào)被某一用戶丟失或被泄露的話,將會(huì)增加數(shù)據(jù)庫數(shù)據(jù)被泄露的風(fēng)險(xiǎn);又例如通過新建和刪除數(shù)據(jù)庫賬號(hào)來滿足不同用戶對(duì)數(shù)據(jù)庫的不同訪問需求,這樣雖然滿足了不同的用戶擁有不同的訪問時(shí)間段和訪問內(nèi)容,但是這種的訪問方式增加了數(shù)據(jù)庫維護(hù)和管理的難度,并且可能會(huì)存在新建的數(shù)據(jù)庫賬號(hào)沒有及時(shí)刪除,從而也增加了數(shù)據(jù)庫數(shù)據(jù)被泄露的風(fēng)險(xiǎn)。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)的一個(gè)目的是提供一種數(shù)據(jù)庫訪問方法及設(shè)備,以解決現(xiàn)有技術(shù)中通過數(shù)據(jù)庫本身來訪問數(shù)據(jù)庫中的數(shù)據(jù)時(shí),可能導(dǎo)致的數(shù)據(jù)被泄露的高風(fēng)險(xiǎn)的問題。
根據(jù)本申請(qǐng)的一個(gè)方面,提供了一種在從賬號(hào)管理設(shè)備端的數(shù)據(jù)庫訪問方法,該方法包括:
創(chuàng)建數(shù)據(jù)庫的從賬號(hào),并預(yù)置所述從賬號(hào)的訪問權(quán)限;
接收用戶設(shè)備發(fā)送的通過所述從賬號(hào)訪問數(shù)據(jù)庫的訪問請(qǐng)求;
基于所述訪問權(quán)限對(duì)所述訪問請(qǐng)求進(jìn)行解析過濾處理,得到過濾后的sql語句,并將所述過濾后的sql語句發(fā)送給數(shù)據(jù)庫服務(wù)設(shè)備;
接收所述數(shù)據(jù)庫服務(wù)設(shè)備基于所述過濾后的sql語句返回的數(shù)據(jù)信息,并將所述數(shù)據(jù)信息發(fā)送給所述用戶設(shè)備。
進(jìn)一步地,上述方法中,所述從賬號(hào)的數(shù)量為至少一個(gè)。
進(jìn)一步地,上述方法中,所述從賬號(hào)包括用戶名,
所述接收用戶設(shè)備發(fā)送的通過所述從賬號(hào)訪問數(shù)據(jù)庫的訪問請(qǐng)求包括:
接收與所述用戶名對(duì)應(yīng)的用戶設(shè)備發(fā)送的通過所述從賬號(hào)訪問數(shù)據(jù)庫的訪問請(qǐng)求。
進(jìn)一步地,上述方法中,所述基于所述訪問權(quán)限對(duì)所述訪問請(qǐng)求進(jìn)行解析過濾處理,得到過濾后的sql語句,包括:
對(duì)所述訪問請(qǐng)求進(jìn)行解析處理,得到至少一個(gè)sql語句;
基于所述訪問權(quán)限對(duì)所述至少一個(gè)sql語句進(jìn)行過濾處理,得到處理后的sql語句。
進(jìn)一步地,上述方法中,所述對(duì)所述訪問請(qǐng)求進(jìn)行解析處理,得到至少一個(gè)sql語句,包括:
基于預(yù)設(shè)的解析規(guī)則對(duì)所述訪問請(qǐng)求進(jìn)行解析處理,得到至少一個(gè)sql語句。
進(jìn)一步地,上述方法中,所述接收所述數(shù)據(jù)庫服務(wù)設(shè)備基于所述過濾后的sql語句返回的數(shù)據(jù)信息,并將所述數(shù)據(jù)信息發(fā)送給所述用戶設(shè)備之后,還包括:
獲取并保存所述用戶設(shè)備通過所述從賬號(hào)訪問數(shù)據(jù)庫時(shí)對(duì)應(yīng)的訪問日志。
進(jìn)一步地,上述方法中,所述方法還包括:
基于預(yù)設(shè)時(shí)間間隔刪除所述從賬號(hào)。
進(jìn)一步地,上述方法中,所述方法還包括:
更新所述從賬號(hào)的訪問權(quán)限。
進(jìn)一步地,上述方法中,所述訪問權(quán)限包括訪問時(shí)間和/或訪問數(shù)據(jù)。
根據(jù)本申請(qǐng)的另一方面,還提供了一種在數(shù)據(jù)庫服務(wù)設(shè)備端的數(shù)據(jù)庫訪問方法,其中,所述方法包括
接收從賬號(hào)管理設(shè)備發(fā)送的過濾后的sql語句,其中,所述過濾后的sql語句由所述從賬號(hào)管理設(shè)備基于預(yù)置的從賬號(hào)的訪問權(quán)限,對(duì)用戶設(shè)備通過所述從賬號(hào)訪問數(shù)據(jù)庫的訪問請(qǐng)求進(jìn)行解析過濾處理得到;
執(zhí)行所述過濾后的sql語句,得到對(duì)應(yīng)的執(zhí)行結(jié)果;
將與所述執(zhí)行結(jié)果對(duì)應(yīng)的數(shù)據(jù)信息發(fā)送給所述從賬號(hào)管理設(shè)備。
進(jìn)一步地,上述方法中,所述訪問權(quán)限包括訪問時(shí)間和/或訪問數(shù)據(jù)。
根據(jù)本申請(qǐng)的另一方面,還提供了一種用于數(shù)據(jù)庫訪問的從賬號(hào)管理設(shè)備,其中,所述從賬號(hào)管理設(shè)備包括:
創(chuàng)建裝置,用于創(chuàng)建數(shù)據(jù)庫的從賬號(hào),并預(yù)置所述從賬號(hào)的訪問權(quán)限;
請(qǐng)求接收裝置,用于接收用戶設(shè)備發(fā)送的通過所述從賬號(hào)訪問數(shù)據(jù)庫的訪問請(qǐng)求;
處理裝置,用于基于所述訪問權(quán)限對(duì)所述訪問請(qǐng)求進(jìn)行解析過濾處理,得到過濾后的sql語句,并將所述過濾后的sql語句發(fā)送給數(shù)據(jù)庫服務(wù)設(shè)備;
信息轉(zhuǎn)發(fā)裝置,用于接收所述數(shù)據(jù)庫服務(wù)設(shè)備基于所述過濾后的sql語句返回的數(shù)據(jù)信息,并將所述數(shù)據(jù)信息發(fā)送給所述用戶設(shè)備。
進(jìn)一步地,上述從賬號(hào)管理設(shè)備中,所述從賬號(hào)的數(shù)量為至少一個(gè)。
進(jìn)一步地,上述從賬號(hào)管理設(shè)備中,所述從賬號(hào)包括用戶名,
所述請(qǐng)求接收裝置用于:
接收與所述用戶名對(duì)應(yīng)的用戶設(shè)備發(fā)送的通過所述從賬號(hào)訪問數(shù)據(jù)庫的訪問請(qǐng)求。
進(jìn)一步地,上述從賬號(hào)管理設(shè)備中,所述處理裝置用于:
對(duì)所述訪問請(qǐng)求進(jìn)行解析處理,得到至少一個(gè)sql語句;
基于所述訪問權(quán)限對(duì)所述至少一個(gè)sql語句進(jìn)行過濾處理,得到處理后的sql語句。
進(jìn)一步地,上述從賬號(hào)管理設(shè)備中,所述處理裝置用于:
基于預(yù)設(shè)的解析規(guī)則對(duì)所述訪問請(qǐng)求進(jìn)行解析處理,得到至少一個(gè)sql語句。
進(jìn)一步地,上述從賬號(hào)管理設(shè)備中,所述信息轉(zhuǎn)發(fā)裝置14還用于:
獲取并保存所述用戶設(shè)備通過所述從賬號(hào)訪問數(shù)據(jù)庫時(shí)對(duì)應(yīng)的訪問日志。
進(jìn)一步地,上述從賬號(hào)管理設(shè)備中,所述從賬號(hào)管理設(shè)備還包括刪除裝置,其中,所述刪除裝置用于:
基于預(yù)設(shè)時(shí)間間隔刪除所述從賬號(hào)。
進(jìn)一步地,上述從賬號(hào)管理設(shè)備中,所述從賬號(hào)管理設(shè)備還包括更新裝置,其中,所述更新裝置用于:
更新所述從賬號(hào)的訪問權(quán)限。
進(jìn)一步地,上述從賬號(hào)管理設(shè)備中,所述訪問權(quán)限包括訪問時(shí)間和/或訪問數(shù)據(jù)。
根據(jù)本申請(qǐng)的另一方面,還提供了一種用于數(shù)據(jù)庫訪問的數(shù)據(jù)庫服務(wù)設(shè)備,其中,所述數(shù)據(jù)庫服務(wù)設(shè)備包括
語句接收裝置,用于接收從賬號(hào)管理設(shè)備發(fā)送的過濾后的sql語句,其中,所述過濾后的sql語句由所述從賬號(hào)管理設(shè)備基于預(yù)置的從賬號(hào)的訪問權(quán)限,對(duì)用戶設(shè)備通過所述從賬號(hào)訪問數(shù)據(jù)庫的訪問請(qǐng)求進(jìn)行解析過濾處理得到;
執(zhí)行裝置,用于執(zhí)行所述過濾后的sql語句,得到對(duì)應(yīng)的執(zhí)行結(jié)果;
信息發(fā)送裝置,用于將與所述執(zhí)行結(jié)果對(duì)應(yīng)的數(shù)據(jù)信息發(fā)送給所述從賬號(hào)管理設(shè)備。
進(jìn)一步地,上述數(shù)據(jù)庫服務(wù)設(shè)備中,所述訪問權(quán)限包括訪問時(shí)間和/或訪問數(shù)據(jù)。
與現(xiàn)有技術(shù)相比,本申請(qǐng)通過在數(shù)據(jù)庫的從賬號(hào)管理設(shè)備端創(chuàng)建數(shù)據(jù)庫的從賬號(hào),并預(yù)置所述從賬號(hào)的訪問權(quán)限;當(dāng)用戶需要通過該從賬號(hào)訪問數(shù)據(jù)庫時(shí),所述從賬號(hào)管理設(shè)備接收用戶設(shè)備發(fā)送的通過所述從賬號(hào)訪問數(shù)據(jù)庫的訪問請(qǐng)求;基于所述訪問權(quán)限對(duì)所述訪問請(qǐng)求進(jìn)行解析過濾處理,得到過濾后的sql語句,并將所述過濾后的sql語句發(fā)送給數(shù)據(jù)庫服務(wù)設(shè)備;之后接收所述數(shù)據(jù)庫服務(wù)設(shè)備基于所述過濾后的sql語句返回的數(shù)據(jù)信息,并將所述數(shù)據(jù)信息發(fā)送給所述用戶設(shè)備。利用創(chuàng)建的數(shù)據(jù)庫的從賬號(hào),不僅滿足了不同用戶的訪問請(qǐng)求,還避免了共用或改變數(shù)據(jù)庫的主賬號(hào)可能導(dǎo)致的數(shù)據(jù)庫的數(shù)據(jù)信息被泄露的風(fēng)險(xiǎn),同時(shí)通過預(yù)置的從賬號(hào)的訪問權(quán)限確保了訪問數(shù)據(jù)庫的數(shù)據(jù)信息的安全性和高效性,進(jìn)一步地保證了數(shù)據(jù)庫的主賬號(hào)的安全性。
進(jìn)一步地,本申請(qǐng)還通過在數(shù)據(jù)庫服務(wù)設(shè)備端接收從賬號(hào)管理設(shè)備發(fā)送的過濾后的sql語句,其中,所述過濾后的sql語句由所述從賬號(hào)管理設(shè)備基于預(yù)置的從賬號(hào)的訪問權(quán)限,對(duì)用戶設(shè)備通過所述從賬號(hào)訪問數(shù)據(jù)庫的訪問請(qǐng)求進(jìn)行解析過濾處理得到;執(zhí)行所述過濾后的sql語句,得到對(duì)應(yīng)的執(zhí)行結(jié)果;將與所述執(zhí)行結(jié)果對(duì)應(yīng)的數(shù)據(jù)信息發(fā)送給所述從賬號(hào)管理設(shè)備,使得所述從賬號(hào)管理設(shè)備將接收到的所述數(shù)據(jù)信息轉(zhuǎn)發(fā)給所述訪問請(qǐng)求對(duì)應(yīng)的用戶設(shè)備,進(jìn)而實(shí)現(xiàn)用戶通過創(chuàng)建的所述從賬號(hào)能夠訪問數(shù)據(jù)庫中的數(shù)據(jù)信息,不僅保證了數(shù)據(jù)庫的主賬號(hào)的安全性,還避免了數(shù)據(jù)庫中的數(shù)據(jù)信息的泄露或丟失,通過所述從賬號(hào)確保了對(duì)數(shù)據(jù)庫中的數(shù)據(jù)信息進(jìn)行訪問的安全性和靈活性。
附圖說明
通過閱讀參照以下附圖所作的對(duì)非限制性實(shí)施例所作的詳細(xì)描述,本申請(qǐng)的其它特征、目的和優(yōu)點(diǎn)將會(huì)變得更明顯:
圖1示出根據(jù)本申請(qǐng)一個(gè)方面的一種在從賬號(hào)管理設(shè)備端的數(shù)據(jù)庫訪問方法的流程示意圖;
圖2示出本申請(qǐng)的另一個(gè)方面提供的一種在數(shù)據(jù)庫服務(wù)設(shè)備端的數(shù)據(jù)庫訪問方法的流程示意圖;
圖3示出根據(jù)本申請(qǐng)一個(gè)方面的一種用于數(shù)據(jù)庫訪問的從賬號(hào)管理設(shè)備的結(jié)構(gòu)示意圖;
圖4示出根據(jù)本申請(qǐng)一個(gè)方面的一種用于數(shù)據(jù)庫訪問的數(shù)據(jù)庫服務(wù)設(shè)備的結(jié)構(gòu)示意圖。
附圖中相同或相似的附圖標(biāo)記代表相同或相似的部件。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本申請(qǐng)作進(jìn)一步詳細(xì)描述。
在本申請(qǐng)一個(gè)典型的配置中,終端、服務(wù)網(wǎng)絡(luò)的設(shè)備和可信方均包括一個(gè)或多個(gè)處理器(cpu)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(rom)或閃存(flashram)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。
計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)、其他類型的隨機(jī)存取存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)、電可擦除可編程只讀存儲(chǔ)器(eeprom)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲(chǔ)器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括非暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號(hào)和載波。
在本申請(qǐng)實(shí)施例中的數(shù)據(jù)庫訪問過程中,當(dāng)用戶需要訪問數(shù)據(jù)庫時(shí),數(shù)據(jù)庫的用戶設(shè)備端獲取用戶訪問數(shù)據(jù)庫的訪問請(qǐng)求,并將該訪問請(qǐng)求發(fā)送給數(shù)據(jù)庫的從賬號(hào)管理設(shè)備,其中,圖1示出根據(jù)本申請(qǐng)一個(gè)方面的一種在從賬號(hào)管理設(shè)備端的數(shù)據(jù)庫訪問方法的流程示意圖;該方法應(yīng)用于數(shù)據(jù)庫訪問過程中的數(shù)據(jù)庫的從賬號(hào)管理服務(wù)設(shè)備端,包括步驟s11、步驟s12、步驟s13和步驟s14,其中,具體包括:
所述步驟s11,創(chuàng)建數(shù)據(jù)庫的從賬號(hào),并預(yù)置所述從賬號(hào)的訪問權(quán)限,通過創(chuàng)建的數(shù)據(jù)庫的從賬號(hào),可以在不需要改變數(shù)據(jù)庫的主賬號(hào)的前提下,基于預(yù)置的從賬號(hào)的訪問權(quán)限實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的數(shù)據(jù)信息的靈活高效的訪問控制;當(dāng)用戶需要通過該從賬號(hào)訪問數(shù)據(jù)庫時(shí),所述步驟s12,接收用戶設(shè)備發(fā)送的通過所述從賬號(hào)訪問數(shù)據(jù)庫的訪問請(qǐng)求,其中所述訪問請(qǐng)求中包含用戶訪問數(shù)據(jù)庫時(shí)的操作數(shù)據(jù)庫的語句sql語句(structuredquerylanguage語句,結(jié)構(gòu)化查詢語言語句);所述步驟s13,基于所述訪問權(quán)限對(duì)所述訪問請(qǐng)求進(jìn)行解析過濾處理,得到過濾后的sql語句,并將所述過濾后的sql語句發(fā)送給數(shù)據(jù)庫服務(wù)設(shè)備;在所述數(shù)據(jù)庫服務(wù)設(shè)備執(zhí)行完過濾后的sql語句得到執(zhí)行結(jié)果之后,將數(shù)據(jù)庫中的與執(zhí)行結(jié)果對(duì)應(yīng)的數(shù)據(jù)信息發(fā)送給所述從賬號(hào)管理設(shè)備,之后所述步驟s14,接收所述數(shù)據(jù)庫服務(wù)設(shè)備基于所述過濾后的sql語句返回的數(shù)據(jù)信息,并將所述數(shù)據(jù)信息發(fā)送給所述用戶設(shè)備。利用創(chuàng)建的數(shù)據(jù)庫的從賬號(hào),不僅滿足了不同用戶的訪問請(qǐng)求,還避免了共用或改變數(shù)據(jù)庫的主賬號(hào)可能導(dǎo)致的數(shù)據(jù)庫的數(shù)據(jù)信息被泄露的風(fēng)險(xiǎn),同時(shí)通過預(yù)置的從賬號(hào)的訪問權(quán)限確保了訪問數(shù)據(jù)庫的數(shù)據(jù)信息的安全性和高效性,進(jìn)一步地保證了數(shù)據(jù)庫的主賬號(hào)的安全性。
需要說明的是,所述步驟s13中通過java數(shù)據(jù)庫連接(javadatabaseconnectivity,jdbc)或開放數(shù)據(jù)庫連接(opendatabaseconnectivity,odbc)的方式,將所述過濾后的sql語句發(fā)送給數(shù)據(jù)庫服務(wù)設(shè)備,使得數(shù)據(jù)庫服務(wù)設(shè)備接收并執(zhí)行所述過濾后的sql語句。
本申請(qǐng)一實(shí)施例中,為了滿足不同用戶對(duì)數(shù)據(jù)庫中的數(shù)據(jù)的訪問需求,所述步驟s11中可以同時(shí)創(chuàng)建至少一個(gè)可以進(jìn)行訪問數(shù)據(jù)庫的從賬號(hào),因而創(chuàng)建的所述從賬號(hào)的數(shù)量為至少一個(gè),以滿足不同用戶對(duì)數(shù)據(jù)庫中的數(shù)據(jù)的訪問需求。進(jìn)一步地,在創(chuàng)建至少一個(gè)從賬號(hào)時(shí),為了保證一個(gè)從賬號(hào)對(duì)應(yīng)滿足一個(gè)用戶的訪問需求,則所述從賬號(hào)包括用戶的用戶名,則所述步驟s12接收用戶設(shè)備發(fā)送的通過所述從賬號(hào)訪問數(shù)據(jù)庫的訪問請(qǐng)求包括:接收與所述用戶名對(duì)應(yīng)的用戶設(shè)備發(fā)送的通過所述從賬號(hào)訪問數(shù)據(jù)庫的訪問請(qǐng)求,實(shí)現(xiàn)創(chuàng)建的每個(gè)從賬號(hào)對(duì)應(yīng)滿足一個(gè)用戶名對(duì)應(yīng)的用戶的數(shù)據(jù)庫訪問需求,保證對(duì)數(shù)據(jù)庫訪問的簡單高效。
例如,對(duì)于數(shù)據(jù)庫a,若存在100個(gè)用戶需要對(duì)數(shù)據(jù)庫a中的數(shù)據(jù)進(jìn)行訪問控制,則同時(shí)創(chuàng)建100個(gè)可以進(jìn)行訪問數(shù)據(jù)庫a的從賬號(hào),以分別供著100個(gè)用戶使用;為了防止從賬號(hào)與用戶之間的對(duì)應(yīng)關(guān)系換亂,因?yàn)閯?chuàng)建所述從賬號(hào)時(shí),所述從賬號(hào)還包括用戶名,例如從賬號(hào)1包括對(duì)應(yīng)的用戶名id1,從賬號(hào)2包括對(duì)應(yīng)的用戶名id2,……,從賬號(hào)100包括對(duì)應(yīng)的用戶名id100;當(dāng)用戶名id25需要對(duì)數(shù)據(jù)庫a進(jìn)行訪問時(shí),則所述用戶名id25對(duì)應(yīng)的用戶設(shè)備向通過所述從賬號(hào)25向從賬號(hào)管理設(shè)備發(fā)送訪問數(shù)據(jù)庫的訪問請(qǐng)求,之后所述步驟s12接收與所述用戶名id25對(duì)應(yīng)的用戶設(shè)備發(fā)送的通過所述從賬號(hào)訪問數(shù)據(jù)庫的訪問請(qǐng)求,通過所述從賬號(hào)可以非常簡單高效地解決對(duì)應(yīng)的用戶名下的用戶的訪問數(shù)據(jù)庫的需求,提高了訪問數(shù)據(jù)庫的效率。
本申請(qǐng)一實(shí)施例中,所述步驟s11中在創(chuàng)建數(shù)據(jù)庫的從賬號(hào)之后,需要對(duì)每個(gè)從賬號(hào)設(shè)置對(duì)應(yīng)的訪問權(quán)限,以保證不同的從賬號(hào)來滿足不同的用戶的訪問請(qǐng)求,其中,所述訪問權(quán)限包括訪問時(shí)間和/或訪問數(shù)據(jù)。例如在創(chuàng)建從賬號(hào)25時(shí),還需預(yù)置從賬號(hào)25可以訪問數(shù)據(jù)庫的訪問時(shí)間,和/或,預(yù)置從賬號(hào)25可以訪問數(shù)據(jù)庫的訪問數(shù)據(jù)(即訪問內(nèi)容),通過預(yù)置的從賬號(hào)的訪問時(shí)間和訪問數(shù)據(jù),可以使用戶能夠快速高效地在預(yù)置的訪問時(shí)間和/或訪問數(shù)據(jù)下來訪問數(shù)據(jù)庫,減少訪問數(shù)據(jù)庫的訪問過程所需時(shí)間,提高訪問數(shù)據(jù)庫的訪問過程的訪問效率。
本申請(qǐng)一實(shí)施例中,所述步驟s13中的基于所述訪問權(quán)限對(duì)所述訪問請(qǐng)求進(jìn)行解析過濾處理,得到過濾后的sql語句,包括:
對(duì)所述訪問請(qǐng)求進(jìn)行解析處理,得到至少一個(gè)sql語句;
基于所述訪問權(quán)限對(duì)所述至少一個(gè)sql語句進(jìn)行過濾處理,得到處理后的sql語句。
本申請(qǐng)一實(shí)施例中,所述訪問請(qǐng)求以數(shù)據(jù)包的形式呈現(xiàn),則所述訪問請(qǐng)求為數(shù)據(jù)庫的用戶設(shè)備端使用從賬號(hào)訪問數(shù)據(jù)庫時(shí),包含數(shù)據(jù)庫操作語句(即sql語句)的數(shù)據(jù)包,則所述步驟s13需首先對(duì)以數(shù)據(jù)包的形式呈現(xiàn)的訪問請(qǐng)求進(jìn)行解析處理,得到解析處理之后的至少一個(gè)sql語句。進(jìn)一步地,為了對(duì)以數(shù)據(jù)包的形式呈現(xiàn)的訪問請(qǐng)求進(jìn)行更好地解析處理,所述步驟s13中之后對(duì)所述訪問請(qǐng)求進(jìn)行解析處理,得到至少一個(gè)sql語句包括:基于預(yù)設(shè)的解析規(guī)則對(duì)所述訪問請(qǐng)求進(jìn)行解析處理,得到至少一個(gè)sql語句。在此,所述預(yù)設(shè)的解析規(guī)則可以包括但不限于是數(shù)據(jù)查詢語句解析規(guī)則、數(shù)據(jù)操縱語句解析規(guī)則、數(shù)據(jù)定義語句解析規(guī)則及數(shù)據(jù)控制語句解析規(guī)則。例如,所述步驟s13采用上述舉例的幾種預(yù)設(shè)的解析規(guī)則,對(duì)以數(shù)據(jù)包的形式呈現(xiàn)的訪問請(qǐng)求進(jìn)行解析處理,得到數(shù)據(jù)庫的用戶設(shè)備端通過從賬號(hào)訪問數(shù)據(jù)庫時(shí)包含的至少一個(gè)sql語句,進(jìn)而實(shí)現(xiàn)對(duì)所述訪問請(qǐng)求的解析處理,以得到具體的數(shù)據(jù)庫操作語句。
接著本申請(qǐng)的上述實(shí)施例,所述步驟s13在對(duì)所述訪問請(qǐng)求進(jìn)行解析處理之后,為了防止非法的數(shù)據(jù)庫操作語句對(duì)數(shù)據(jù)庫進(jìn)行非法訪問,所述步驟s13基于訪問權(quán)限對(duì)解析處理得到的至少一個(gè)sql進(jìn)行過濾處理,以過濾掉解析處理得到的至少一個(gè)sql中的非法的sql語句,以得到過濾后的sql語句。在此,若所述訪問權(quán)限包括訪問時(shí)間,則對(duì)sql語句進(jìn)行的過濾處理過程為:分別判斷每個(gè)sql語句的執(zhí)行時(shí)間是否在從賬號(hào)管理設(shè)備預(yù)置的所述訪問時(shí)間內(nèi),若不在,則將該sql語句丟棄不執(zhí)行;若在,則將該sql語句保留,在對(duì)解析處理得到的所有的sql語句進(jìn)行過濾處理后,將保留下來的處理后的sql語句發(fā)送給數(shù)據(jù)庫服務(wù)設(shè)備,使該數(shù)據(jù)庫服務(wù)設(shè)備執(zhí)行過濾后的sql語句,實(shí)現(xiàn)了對(duì)訪問請(qǐng)求解析處理之后得到的至少一個(gè)sql語句進(jìn)行過濾處理,保證了訪問數(shù)據(jù)庫的sql語句的合法性,進(jìn)而確保了訪問數(shù)據(jù)庫時(shí)的安全性。
接著本申請(qǐng)上述實(shí)施例,若所述訪問權(quán)限包括訪問數(shù)據(jù),則對(duì)sql語句進(jìn)行的過濾處理過程為:分別判斷每個(gè)sql語句中的訪問內(nèi)容(例如數(shù)據(jù)庫中的表,字段等)是否在從賬號(hào)管理設(shè)備預(yù)置的所述訪問數(shù)據(jù)內(nèi),若不在,則將該sql語句丟棄不執(zhí)行;若在,則將該sql語句保留,在對(duì)解析處理得到的所有的sql語句進(jìn)行過濾處理后,將保留下來的處理后的sql語句發(fā)送給數(shù)據(jù)庫服務(wù)設(shè)備,使該數(shù)據(jù)庫服務(wù)設(shè)備執(zhí)行過濾后的sql語句,實(shí)現(xiàn)了對(duì)訪問請(qǐng)求解析處理之后得到的至少一個(gè)sql語句進(jìn)行過濾處理,保證了訪問數(shù)據(jù)庫的sql語句的合法性,進(jìn)而確保了訪問數(shù)據(jù)庫時(shí)的安全性。
接著本申請(qǐng)上述實(shí)施例,若所述訪問權(quán)限包括訪問數(shù)據(jù)和訪問時(shí)間,則對(duì)sql語句進(jìn)行的過濾處理過程為:分別判斷每個(gè)sql語句的執(zhí)行時(shí)間是否在從賬號(hào)管理設(shè)備預(yù)置的所述訪問時(shí)間內(nèi),且每個(gè)sql語句的訪問內(nèi)容(例如數(shù)據(jù)庫中的表,字段等)是否在從賬號(hào)管理設(shè)備預(yù)置的所述訪問數(shù)據(jù)內(nèi),若均不在,則將該sql語句丟棄不執(zhí)行;若均在,則將該sql語句保留,在對(duì)解析處理得到的所有的sql語句進(jìn)行過濾處理后,將保留下來的處理后的sql語句發(fā)送給數(shù)據(jù)庫服務(wù)設(shè)備,使該數(shù)據(jù)庫服務(wù)設(shè)備執(zhí)行過濾后的sql語句,實(shí)現(xiàn)了對(duì)訪問請(qǐng)求解析處理之后得到的至少一個(gè)sql語句進(jìn)行精確過濾處理,保證了訪問數(shù)據(jù)庫的sql語句的合法性,更進(jìn)一步地確保了訪問數(shù)據(jù)庫時(shí)的安全性,使得只有滿足訪問權(quán)限的用戶設(shè)備才能夠在預(yù)置的訪問時(shí)間內(nèi)獲取到預(yù)置的訪問數(shù)據(jù)內(nèi)的數(shù)據(jù)信息。
本申請(qǐng)一實(shí)施例中,為了避免數(shù)據(jù)庫出現(xiàn)數(shù)據(jù)泄露或丟失時(shí)找不到根源所在,所述步驟s14接收所述數(shù)據(jù)庫服務(wù)設(shè)備基于所述過濾后的sql語句返回的數(shù)據(jù)信息,并將所述數(shù)據(jù)信息發(fā)送給所述用戶設(shè)備之后,還包括:獲取并保存所述用戶設(shè)備通過所述從賬號(hào)訪問數(shù)據(jù)庫時(shí)對(duì)應(yīng)的訪問日志,使得,數(shù)據(jù)庫中的數(shù)據(jù)信息出現(xiàn)泄露或丟失之后,能夠基于數(shù)據(jù)庫中的數(shù)據(jù)信息被被泄露的時(shí)間和/或數(shù)據(jù)信息,通過該訪問日志追溯并查找到訪問該數(shù)據(jù)庫被泄露的數(shù)據(jù)信息被哪個(gè)用戶設(shè)備通過從賬號(hào)訪問過,進(jìn)而查找到到時(shí)數(shù)據(jù)庫中的數(shù)據(jù)信息被泄露和/或丟失的根源所在,確保在數(shù)據(jù)庫中的數(shù)據(jù)信息發(fā)送泄露和/或丟失之后能夠快速地解決問題。
本申請(qǐng)一實(shí)施例中,本申請(qǐng)?zhí)峁┮环N在從賬號(hào)管理設(shè)備端的數(shù)據(jù)庫訪問方法,還包括:基于預(yù)設(shè)時(shí)間間隔刪除所述從賬號(hào)。為了節(jié)省從賬號(hào)管理設(shè)備的存儲(chǔ)資源以及避免創(chuàng)建的從賬號(hào)的泄露和/或丟失導(dǎo)致的數(shù)據(jù)庫中的數(shù)據(jù)信息的不安全性,本申請(qǐng)實(shí)施例中對(duì)創(chuàng)建的每一個(gè)從賬號(hào)都是有生命周期的,即每一個(gè)從賬號(hào)自創(chuàng)建開始,超過預(yù)設(shè)時(shí)間間隔之后,則將創(chuàng)建的所述從賬號(hào)刪除,以避免該從賬號(hào)的泄露和/或丟失,進(jìn)而進(jìn)一步地保證數(shù)據(jù)庫中的數(shù)據(jù)信息的安全性,同時(shí)刪除了所述從賬號(hào),也節(jié)省了從賬號(hào)管理設(shè)備的存儲(chǔ)資源。
本申請(qǐng)一實(shí)施例中,本申請(qǐng)?zhí)峁┮环N在從賬號(hào)管理設(shè)備端的數(shù)據(jù)庫訪問方法,還包括:更新所述從賬號(hào)的訪問權(quán)限。為了滿足不同的用戶對(duì)數(shù)據(jù)庫的不同的訪問請(qǐng)求,需要對(duì)所述從賬號(hào)的訪問權(quán)限進(jìn)行更新,以滿足用戶設(shè)備通過所述從賬號(hào)能夠在不同的訪問時(shí)間內(nèi)和/或訪問數(shù)據(jù)內(nèi)進(jìn)行數(shù)據(jù)庫的訪問,進(jìn)而滿足用戶通過所述從賬號(hào)進(jìn)行數(shù)據(jù)庫訪問時(shí)的不同訪問需求。
在數(shù)據(jù)庫從賬號(hào)管理設(shè)備將用戶設(shè)備發(fā)送的訪問數(shù)據(jù)庫的訪問請(qǐng)求進(jìn)行解析過濾處理之后,得到訪問請(qǐng)求對(duì)應(yīng)的過濾后的sql語句,并將過濾后的sql語句發(fā)送給數(shù)據(jù)庫服務(wù)設(shè)備進(jìn)行后續(xù)訪問處理如圖2所示,圖2示出本申請(qǐng)的另一個(gè)方面提供的一種在數(shù)據(jù)庫服務(wù)設(shè)備端的數(shù)據(jù)庫訪問方法的流程示意圖;該方法應(yīng)用于數(shù)據(jù)庫訪問過程中的數(shù)據(jù)庫服務(wù)設(shè)備端,其中,所述方法包括步驟s21、步驟s22和步驟s23,其中,具體包括:所述步驟s21,接收從賬號(hào)管理設(shè)備發(fā)送的過濾后的sql語句,其中,所述過濾后的sql語句由所述從賬號(hào)管理設(shè)備基于預(yù)置的從賬號(hào)的訪問權(quán)限,對(duì)用戶設(shè)備通過所述從賬號(hào)訪問數(shù)據(jù)庫的訪問請(qǐng)求進(jìn)行解析過濾處理得到;所述步驟s22,執(zhí)行所述過濾后的sql語句,得到對(duì)應(yīng)的執(zhí)行結(jié)果;所述步驟s23,將與所述執(zhí)行結(jié)果對(duì)應(yīng)的數(shù)據(jù)信息發(fā)送給所述從賬號(hào)管理設(shè)備,使得所述從賬號(hào)管理設(shè)備將接收到的所述數(shù)據(jù)信息轉(zhuǎn)發(fā)給所述訪問請(qǐng)求對(duì)應(yīng)的用戶設(shè)備,進(jìn)而實(shí)現(xiàn)用戶通過創(chuàng)建的所述從賬號(hào)能夠訪問數(shù)據(jù)庫中的數(shù)據(jù)信息,不僅保證了數(shù)據(jù)庫的主賬號(hào)的安全性,還避免了數(shù)據(jù)庫中的數(shù)據(jù)信息的泄露或丟失,通過所述從賬號(hào)確保了對(duì)數(shù)據(jù)庫中的數(shù)據(jù)信息進(jìn)行訪問的安全性和靈活性。
為了滿足不同的用戶對(duì)數(shù)據(jù)庫進(jìn)行訪問時(shí)的不同的訪問請(qǐng)求,需要對(duì)每個(gè)從賬號(hào)設(shè)置對(duì)應(yīng)的訪問權(quán)限,以保證不同的從賬號(hào)來滿足不同的用戶的訪問請(qǐng)求,其中,所述訪問權(quán)限包括訪問時(shí)間和/或訪問數(shù)據(jù)。例如從賬號(hào)管理設(shè)備在創(chuàng)建從賬號(hào)25時(shí),還需預(yù)置從賬號(hào)25可以訪問數(shù)據(jù)庫的訪問時(shí)間,和/或,預(yù)置從賬號(hào)25可以訪問數(shù)據(jù)庫的訪問數(shù)據(jù)(即訪問內(nèi)容),通過預(yù)置的從賬號(hào)的訪問時(shí)間和訪問數(shù)據(jù),可以使用戶能夠快速高效地在預(yù)置的訪問時(shí)間和/或訪問數(shù)據(jù)下來訪問數(shù)據(jù)庫,減少訪問數(shù)據(jù)庫的訪問過程所需時(shí)間,提高訪問數(shù)據(jù)庫的訪問過程的訪問效率。
在本申請(qǐng)實(shí)施例中的數(shù)據(jù)庫訪問過程中,當(dāng)用戶需要訪問數(shù)據(jù)庫時(shí),數(shù)據(jù)庫的用戶設(shè)備端獲取用戶訪問數(shù)據(jù)庫的訪問請(qǐng)求,并將該訪問請(qǐng)求發(fā)送給數(shù)據(jù)庫的從賬號(hào)管理設(shè)備,其中,圖3示出根據(jù)本申請(qǐng)一個(gè)方面的一種用于數(shù)據(jù)庫訪問的從賬號(hào)管理設(shè)備的結(jié)構(gòu)示意圖;應(yīng)用于數(shù)據(jù)庫訪問過程中的數(shù)據(jù)庫的從賬號(hào)管理服務(wù)設(shè)備端,包括創(chuàng)建裝置11、請(qǐng)求接收裝置12、處理裝置13和信息發(fā)送裝置14,其中,具體包括:
所述創(chuàng)建裝置11,用于創(chuàng)建數(shù)據(jù)庫的從賬號(hào),并預(yù)置所述從賬號(hào)的訪問權(quán)限,通過創(chuàng)建的數(shù)據(jù)庫的從賬號(hào),可以在不需要改變數(shù)據(jù)庫的主賬號(hào)的前提下,基于預(yù)置的從賬號(hào)的訪問權(quán)限實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的數(shù)據(jù)信息的靈活高效的訪問控制;當(dāng)用戶需要通過該從賬號(hào)訪問數(shù)據(jù)庫時(shí),所述請(qǐng)求接收裝置12,用于接收用戶設(shè)備發(fā)送的通過所述從賬號(hào)訪問數(shù)據(jù)庫的訪問請(qǐng)求;所述處理裝置13,用于基于所述訪問權(quán)限對(duì)所述訪問請(qǐng)求進(jìn)行解析過濾處理,得到過濾后的sql語句,并將所述過濾后的sql語句發(fā)送給數(shù)據(jù)庫服務(wù)設(shè)備;在所述數(shù)據(jù)庫服務(wù)設(shè)備執(zhí)行完過濾后的sql語句得到執(zhí)行結(jié)果之后,將數(shù)據(jù)庫中的與執(zhí)行結(jié)果對(duì)應(yīng)的數(shù)據(jù)信息發(fā)送給所述從賬號(hào)管理設(shè)備,之后所述信息發(fā)送裝置14,用于接收所述數(shù)據(jù)庫服務(wù)設(shè)備基于所述過濾后的sql語句返回的數(shù)據(jù)信息,并將所述數(shù)據(jù)信息發(fā)送給所述用戶設(shè)備。利用創(chuàng)建的數(shù)據(jù)庫的從賬號(hào),不僅滿足了不同用戶的訪問請(qǐng)求,還避免了共用或改變數(shù)據(jù)庫的主賬號(hào)可能導(dǎo)致的數(shù)據(jù)庫的數(shù)據(jù)信息被泄露的風(fēng)險(xiǎn),同時(shí)通過預(yù)置的從賬號(hào)的訪問權(quán)限確保了訪問數(shù)據(jù)庫的數(shù)據(jù)信息的安全性和高效性,進(jìn)一步地保證了數(shù)據(jù)庫的主賬號(hào)的安全性。
需要說明的是,所述處理裝置13中通過java數(shù)據(jù)庫連接(javadatabaseconnectivity,jdbc)或開放數(shù)據(jù)庫連接(opendatabaseconnectivity,odbc)的方式,將所述過濾后的sql語句發(fā)送給數(shù)據(jù)庫服務(wù)設(shè)備,使得數(shù)據(jù)庫服務(wù)設(shè)備接收并執(zhí)行所述過濾后的sql語句。
本申請(qǐng)一實(shí)施例中,為了滿足不同用戶對(duì)數(shù)據(jù)庫中的數(shù)據(jù)的訪問需求,所述創(chuàng)建裝置11中可以同時(shí)創(chuàng)建至少一個(gè)可以進(jìn)行訪問數(shù)據(jù)庫的從賬號(hào),因而創(chuàng)建的所述從賬號(hào)的數(shù)量為至少一個(gè),以滿足不同用戶對(duì)數(shù)據(jù)庫中的數(shù)據(jù)的訪問需求。進(jìn)一步地,在創(chuàng)建至少一個(gè)從賬號(hào)時(shí),為了保證一個(gè)從賬號(hào)對(duì)應(yīng)滿足一個(gè)用戶的訪問需求,則所述從賬號(hào)包括用戶的用戶名,則所述請(qǐng)求接收裝置12用于:接收與所述用戶名對(duì)應(yīng)的用戶設(shè)備發(fā)送的通過所述從賬號(hào)訪問數(shù)據(jù)庫的訪問請(qǐng)求,實(shí)現(xiàn)創(chuàng)建的每個(gè)從賬號(hào)對(duì)應(yīng)滿足一個(gè)用戶名對(duì)應(yīng)的用戶的數(shù)據(jù)庫訪問需求,保證對(duì)數(shù)據(jù)庫訪問的簡單高效。
例如,對(duì)于數(shù)據(jù)庫a,若存在100個(gè)用戶需要對(duì)數(shù)據(jù)庫a中的數(shù)據(jù)進(jìn)行訪問控制,則同時(shí)創(chuàng)建100個(gè)可以進(jìn)行訪問數(shù)據(jù)庫a的從賬號(hào),以分別供著100個(gè)用戶使用;為了防止從賬號(hào)與用戶之間的對(duì)應(yīng)關(guān)系換亂,因?yàn)閯?chuàng)建所述從賬號(hào)時(shí),所述從賬號(hào)還包括用戶名,例如從賬號(hào)1包括對(duì)應(yīng)的用戶名id1,從賬號(hào)2包括對(duì)應(yīng)的用戶名id2,……,從賬號(hào)100包括對(duì)應(yīng)的用戶名id100;當(dāng)用戶名id25需要對(duì)數(shù)據(jù)庫a進(jìn)行訪問時(shí),則所述用戶名id25對(duì)應(yīng)的用戶設(shè)備向通過所述從賬號(hào)25向從賬號(hào)管理設(shè)備發(fā)送訪問數(shù)據(jù)庫的訪問請(qǐng)求,之后所述請(qǐng)求接收裝置12接收與所述用戶名id25對(duì)應(yīng)的用戶設(shè)備發(fā)送的通過所述從賬號(hào)訪問數(shù)據(jù)庫的訪問請(qǐng)求,通過所述從賬號(hào)可以非常簡單高效地解決對(duì)應(yīng)的用戶名下的用戶的訪問數(shù)據(jù)庫的需求,提高了訪問數(shù)據(jù)庫的效率。
本申請(qǐng)一實(shí)施例中,所述創(chuàng)建裝置11中在創(chuàng)建數(shù)據(jù)庫的從賬號(hào)之后,需要對(duì)每個(gè)從賬號(hào)設(shè)置對(duì)應(yīng)的訪問權(quán)限,以保證不同的從賬號(hào)來滿足不同的用戶的訪問請(qǐng)求,其中,所述訪問權(quán)限包括訪問時(shí)間和/或訪問數(shù)據(jù)。例如在創(chuàng)建從賬號(hào)25時(shí),還需預(yù)置從賬號(hào)25可以訪問數(shù)據(jù)庫的訪問時(shí)間,和/或,預(yù)置從賬號(hào)25可以訪問數(shù)據(jù)庫的訪問數(shù)據(jù)(即訪問內(nèi)容),通過預(yù)置的從賬號(hào)的訪問時(shí)間和訪問數(shù)據(jù),可以使用戶能夠快速高效地在預(yù)置的訪問時(shí)間和/或訪問數(shù)據(jù)下來訪問數(shù)據(jù)庫,減少訪問數(shù)據(jù)庫的訪問過程所需時(shí)間,提高訪問數(shù)據(jù)庫的訪問過程的訪問效率。
本申請(qǐng)一實(shí)施例中,所述處理裝置13用于:
對(duì)所述訪問請(qǐng)求進(jìn)行解析處理,得到至少一個(gè)sql語句;
基于所述訪問權(quán)限對(duì)所述至少一個(gè)sql語句進(jìn)行過濾處理,得到處理后的sql語句。
本申請(qǐng)一實(shí)施例中,所述訪問請(qǐng)求以數(shù)據(jù)包的形式呈現(xiàn),則所述訪問請(qǐng)求為數(shù)據(jù)庫的用戶設(shè)備端使用從賬號(hào)訪問數(shù)據(jù)庫時(shí),包含數(shù)據(jù)庫操作語句(即sql語句)的數(shù)據(jù)包,則所述處理裝置13需首先對(duì)以數(shù)據(jù)包的形式呈現(xiàn)的訪問請(qǐng)求進(jìn)行解析處理,得到解析處理之后的至少一個(gè)sql語句。
進(jìn)一步地,為了對(duì)以數(shù)據(jù)包的形式呈現(xiàn)的訪問請(qǐng)求進(jìn)行更好地解析處理,所述處理裝置13用于:基于預(yù)設(shè)的解析規(guī)則對(duì)所述訪問請(qǐng)求進(jìn)行解析處理,得到至少一個(gè)sql語句。在此,所述預(yù)設(shè)的解析規(guī)則可以包括但不限于是數(shù)據(jù)查詢語句解析規(guī)則、數(shù)據(jù)操縱語句解析規(guī)則、數(shù)據(jù)定義語句解析規(guī)則及數(shù)據(jù)控制語句解析規(guī)則。例如,所述處理裝置13采用上述舉例的幾種預(yù)設(shè)的解析規(guī)則,對(duì)以數(shù)據(jù)包的形式呈現(xiàn)的訪問請(qǐng)求進(jìn)行解析處理,得到數(shù)據(jù)庫的用戶設(shè)備端通過從賬號(hào)訪問數(shù)據(jù)庫時(shí)包含的至少一個(gè)sql語句,進(jìn)而實(shí)現(xiàn)對(duì)所述訪問請(qǐng)求的解析處理,以得到具體的數(shù)據(jù)庫操作語句。
接著本申請(qǐng)的上述實(shí)施例,所述處理裝置13在對(duì)所述訪問請(qǐng)求進(jìn)行解析處理之后,為了防止非法的數(shù)據(jù)庫操作語句對(duì)數(shù)據(jù)庫進(jìn)行非法訪問,所述處理裝置13基于訪問權(quán)限對(duì)解析處理得到的至少一個(gè)sql進(jìn)行過濾處理,以過濾掉解析處理得到的至少一個(gè)sql中的非法的sql語句,以得到過濾后的sql語句。在此,若所述訪問權(quán)限包括訪問時(shí)間,則對(duì)sql語句進(jìn)行的過濾處理過程為:分別判斷每個(gè)sql語句的執(zhí)行時(shí)間是否在從賬號(hào)管理設(shè)備預(yù)置的所述訪問時(shí)間內(nèi),若不在,則將該sql語句丟棄不執(zhí)行;若在,則將該sql語句保留,在對(duì)解析處理得到的所有的sql語句進(jìn)行過濾處理后,將保留下來的處理后的sql語句發(fā)送給數(shù)據(jù)庫服務(wù)設(shè)備,使該數(shù)據(jù)庫服務(wù)設(shè)備執(zhí)行過濾后的sql語句,實(shí)現(xiàn)了對(duì)訪問請(qǐng)求解析處理之后得到的至少一個(gè)sql語句進(jìn)行過濾處理,保證了訪問數(shù)據(jù)庫的sql語句的合法性,進(jìn)而確保了訪問數(shù)據(jù)庫時(shí)的安全性。
接著本申請(qǐng)上述實(shí)施例,若所述訪問權(quán)限包括訪問數(shù)據(jù),則對(duì)sql語句進(jìn)行的過濾處理過程為:分別判斷每個(gè)sql語句中的訪問內(nèi)容(例如數(shù)據(jù)庫中的表,字段等)是否在從賬號(hào)管理設(shè)備預(yù)置的所述訪問數(shù)據(jù)內(nèi),若不在,則將該sql語句丟棄不執(zhí)行;若在,則將該sql語句保留,在對(duì)解析處理得到的所有的sql語句進(jìn)行過濾處理后,將保留下來的處理后的sql語句發(fā)送給數(shù)據(jù)庫服務(wù)設(shè)備,使該數(shù)據(jù)庫服務(wù)設(shè)備執(zhí)行過濾后的sql語句,實(shí)現(xiàn)了對(duì)訪問請(qǐng)求解析處理之后得到的至少一個(gè)sql語句進(jìn)行過濾處理,保證了訪問數(shù)據(jù)庫的sql語句的合法性,進(jìn)而確保了訪問數(shù)據(jù)庫時(shí)的安全性。
接著本申請(qǐng)上述實(shí)施例,若所述訪問權(quán)限包括訪問數(shù)據(jù)和訪問時(shí)間,則對(duì)sql語句進(jìn)行的過濾處理過程為:分別判斷每個(gè)sql語句的執(zhí)行時(shí)間是否在從賬號(hào)管理設(shè)備預(yù)置的所述訪問時(shí)間內(nèi),且每個(gè)sql語句的訪問內(nèi)容(例如數(shù)據(jù)庫中的表,字段等)是否在從賬號(hào)管理設(shè)備預(yù)置的所述訪問數(shù)據(jù)內(nèi),若均不在,則將該sql語句丟棄不執(zhí)行;若均在,則將該sql語句保留,在對(duì)解析處理得到的所有的sql語句進(jìn)行過濾處理后,將保留下來的處理后的sql語句發(fā)送給數(shù)據(jù)庫服務(wù)設(shè)備,使該數(shù)據(jù)庫服務(wù)設(shè)備執(zhí)行過濾后的sql語句,實(shí)現(xiàn)了對(duì)訪問請(qǐng)求解析處理之后得到的至少一個(gè)sql語句進(jìn)行精確過濾處理,保證了訪問數(shù)據(jù)庫的sql語句的合法性,更進(jìn)一步地確保了訪問數(shù)據(jù)庫時(shí)的安全性,使得只有滿足訪問權(quán)限的用戶設(shè)備才能夠在預(yù)置的訪問時(shí)間內(nèi)獲取到預(yù)置的訪問數(shù)據(jù)內(nèi)的數(shù)據(jù)信息。
本申請(qǐng)一實(shí)施例中,為了避免數(shù)據(jù)庫出現(xiàn)數(shù)據(jù)泄露或丟失時(shí)找不到根源所在,所述信息發(fā)送裝置14在用于接收所述數(shù)據(jù)庫服務(wù)設(shè)備基于所述過濾后的sql語句返回的數(shù)據(jù)信息,并將所述數(shù)據(jù)信息發(fā)送給所述用戶設(shè)備之后,還用于:獲取并保存所述用戶設(shè)備通過所述從賬號(hào)訪問數(shù)據(jù)庫時(shí)對(duì)應(yīng)的訪問日志,使得,數(shù)據(jù)庫中的數(shù)據(jù)信息出現(xiàn)泄露或丟失之后,能夠基于數(shù)據(jù)庫中的數(shù)據(jù)信息被被泄露的時(shí)間和/或數(shù)據(jù)信息,通過該訪問日志追溯并查找到訪問該數(shù)據(jù)庫被泄露的數(shù)據(jù)信息被哪個(gè)用戶設(shè)備通過從賬號(hào)訪問過,進(jìn)而查找到到時(shí)數(shù)據(jù)庫中的數(shù)據(jù)信息被泄露和/或丟失的根源所在,確保在數(shù)據(jù)庫中的數(shù)據(jù)信息發(fā)送泄露和/或丟失之后能夠快速地解決問題。
本申請(qǐng)一實(shí)施例中,本申請(qǐng)?zhí)峁┮环N用于數(shù)據(jù)庫訪問的從賬號(hào)管理設(shè)備,還包括刪除裝置,其中,所述刪除裝置用于:基于預(yù)設(shè)時(shí)間間隔刪除所述從賬號(hào)。為了節(jié)省從賬號(hào)管理設(shè)備的存儲(chǔ)資源以及避免創(chuàng)建的從賬號(hào)的泄露和/或丟失導(dǎo)致的數(shù)據(jù)庫中的數(shù)據(jù)信息的不安全性,本申請(qǐng)實(shí)施例中對(duì)創(chuàng)建的每一個(gè)從賬號(hào)都是有生命周期的,即每一個(gè)從賬號(hào)自創(chuàng)建開始,超過預(yù)設(shè)時(shí)間間隔之后,則將創(chuàng)建的所述從賬號(hào)刪除,以避免該從賬號(hào)的泄露和/或丟失,進(jìn)而進(jìn)一步地保證數(shù)據(jù)庫中的數(shù)據(jù)信息的安全性,同時(shí)刪除了所述從賬號(hào),也節(jié)省了從賬號(hào)管理設(shè)備的存儲(chǔ)資源。
本申請(qǐng)一實(shí)施例中,本申請(qǐng)?zhí)峁┮环N用于數(shù)據(jù)庫訪問的從賬號(hào)管理設(shè)備,還包括更新裝置,其中,所述更新裝置用于:更新所述從賬號(hào)的訪問權(quán)限。為了滿足不同的用戶對(duì)數(shù)據(jù)庫的不同的訪問請(qǐng)求,需要對(duì)所述從賬號(hào)的訪問權(quán)限進(jìn)行更新,以滿足用戶設(shè)備通過所述從賬號(hào)能夠在不同的訪問時(shí)間內(nèi)和/或訪問數(shù)據(jù)內(nèi)進(jìn)行數(shù)據(jù)庫的訪問,進(jìn)而滿足用戶通過所述從賬號(hào)進(jìn)行數(shù)據(jù)庫訪問時(shí)的不同訪問需求。
在數(shù)據(jù)庫從賬號(hào)管理設(shè)備將用戶設(shè)備發(fā)送的訪問數(shù)據(jù)庫的訪問請(qǐng)求進(jìn)行解析過濾處理之后,得到訪問請(qǐng)求對(duì)應(yīng)的過濾后的sql語句,并將過濾后的sql語句發(fā)送給數(shù)據(jù)庫服務(wù)設(shè)備進(jìn)行后續(xù)訪問處理,該數(shù)據(jù)庫服務(wù)設(shè)備如圖4所示,圖4示出根據(jù)本申請(qǐng)一個(gè)方面的一種用于數(shù)據(jù)庫訪問的數(shù)據(jù)庫服務(wù)設(shè)備的結(jié)構(gòu)示意圖;應(yīng)用于數(shù)據(jù)庫訪問過程中的數(shù)據(jù)庫服務(wù)設(shè)備端,其中,所述方法包括語句接收裝置21、執(zhí)行裝置22和信息發(fā)送裝置23,其中,具體包括:所述語句接收裝置21,用于接收從賬號(hào)管理設(shè)備發(fā)送的過濾后的sql語句,其中,所述過濾后的sql語句由所述從賬號(hào)管理設(shè)備基于預(yù)置的從賬號(hào)的訪問權(quán)限,對(duì)用戶設(shè)備通過所述從賬號(hào)訪問數(shù)據(jù)庫的訪問請(qǐng)求進(jìn)行解析過濾處理得到;所述執(zhí)行裝置22,用于執(zhí)行所述過濾后的sql語句,得到對(duì)應(yīng)的執(zhí)行結(jié)果;所述信息發(fā)送裝置23,用于將與所述執(zhí)行結(jié)果對(duì)應(yīng)的數(shù)據(jù)信息發(fā)送給所述從賬號(hào)管理設(shè)備,使得所述從賬號(hào)管理設(shè)備將接收到的所述數(shù)據(jù)信息轉(zhuǎn)發(fā)給所述訪問請(qǐng)求對(duì)應(yīng)的用戶設(shè)備,進(jìn)而實(shí)現(xiàn)用戶通過創(chuàng)建的所述從賬號(hào)能夠訪問數(shù)據(jù)庫中的數(shù)據(jù)信息,不僅保證了數(shù)據(jù)庫的主賬號(hào)的安全性,還避免了數(shù)據(jù)庫中的數(shù)據(jù)信息的泄露或丟失,通過所述從賬號(hào)確保了對(duì)數(shù)據(jù)庫中的數(shù)據(jù)信息進(jìn)行訪問的安全性和靈活性。
為了滿足不同的用戶對(duì)數(shù)據(jù)庫進(jìn)行訪問時(shí)的不同的訪問請(qǐng)求,需要對(duì)每個(gè)從賬號(hào)設(shè)置對(duì)應(yīng)的訪問權(quán)限,以保證不同的從賬號(hào)來滿足不同的用戶的訪問請(qǐng)求,其中,所述訪問權(quán)限包括訪問時(shí)間和/或訪問數(shù)據(jù)。例如從賬號(hào)管理設(shè)備在創(chuàng)建從賬號(hào)25時(shí),還需預(yù)置從賬號(hào)25可以訪問數(shù)據(jù)庫的訪問時(shí)間,和/或,預(yù)置從賬號(hào)25可以訪問數(shù)據(jù)庫的訪問數(shù)據(jù)(即訪問內(nèi)容),通過預(yù)置的從賬號(hào)的訪問時(shí)間和訪問數(shù)據(jù),可以使用戶能夠快速高效地在預(yù)置的訪問時(shí)間和/或訪問數(shù)據(jù)下來訪問數(shù)據(jù)庫,減少訪問數(shù)據(jù)庫的訪問過程所需時(shí)間,提高訪問數(shù)據(jù)庫的訪問過程的訪問效率。
綜上所述,本申請(qǐng)通過在數(shù)據(jù)庫的從賬號(hào)管理設(shè)備端創(chuàng)建數(shù)據(jù)庫的從賬號(hào),并預(yù)置所述從賬號(hào)的訪問權(quán)限;當(dāng)用戶需要通過該從賬號(hào)訪問數(shù)據(jù)庫時(shí),所述從賬號(hào)管理設(shè)備接收用戶設(shè)備發(fā)送的通過所述從賬號(hào)訪問數(shù)據(jù)庫的訪問請(qǐng)求;基于所述訪問權(quán)限對(duì)所述訪問請(qǐng)求進(jìn)行解析過濾處理,得到過濾后的sql語句,并將所述過濾后的sql語句發(fā)送給數(shù)據(jù)庫服務(wù)設(shè)備;之后接收所述數(shù)據(jù)庫服務(wù)設(shè)備基于所述過濾后的sql語句返回的數(shù)據(jù)信息,并將所述數(shù)據(jù)信息發(fā)送給所述用戶設(shè)備。利用創(chuàng)建的數(shù)據(jù)庫的從賬號(hào),不僅滿足了不同用戶的訪問請(qǐng)求,還避免了共用或改變數(shù)據(jù)庫的主賬號(hào)可能導(dǎo)致的數(shù)據(jù)庫的數(shù)據(jù)信息被泄露的風(fēng)險(xiǎn),同時(shí)通過預(yù)置的從賬號(hào)的訪問權(quán)限確保了訪問數(shù)據(jù)庫的數(shù)據(jù)信息的安全性和高效性,進(jìn)一步地保證了數(shù)據(jù)庫的主賬號(hào)的安全性。即本申請(qǐng)的實(shí)施例中,在訪問數(shù)據(jù)庫的訪問過程中,增加了數(shù)據(jù)庫的從賬號(hào)管理設(shè)備來控制用戶訪問數(shù)據(jù)庫的權(quán)限,大大簡化了對(duì)數(shù)據(jù)庫的主賬號(hào)的改變及刪除等管理的復(fù)雜性,并且通過創(chuàng)建的數(shù)據(jù)庫的從賬號(hào)的訪問權(quán)限的預(yù)置,來提高了用戶訪問數(shù)據(jù)庫的安全性。
進(jìn)一步地,本申請(qǐng)還通過在數(shù)據(jù)庫服務(wù)設(shè)備端接收從賬號(hào)管理設(shè)備發(fā)送的過濾后的sql語句,其中,所述過濾后的sql語句由所述從賬號(hào)管理設(shè)備基于預(yù)置的從賬號(hào)的訪問權(quán)限,對(duì)用戶設(shè)備通過所述從賬號(hào)訪問數(shù)據(jù)庫的訪問請(qǐng)求進(jìn)行解析過濾處理得到;執(zhí)行所述過濾后的sql語句,得到對(duì)應(yīng)的執(zhí)行結(jié)果;將與所述執(zhí)行結(jié)果對(duì)應(yīng)的數(shù)據(jù)信息發(fā)送給所述從賬號(hào)管理設(shè)備,使得所述從賬號(hào)管理設(shè)備將接收到的所述數(shù)據(jù)信息轉(zhuǎn)發(fā)給所述訪問請(qǐng)求對(duì)應(yīng)的用戶設(shè)備,進(jìn)而實(shí)現(xiàn)用戶通過創(chuàng)建的所述從賬號(hào)能夠訪問數(shù)據(jù)庫中的數(shù)據(jù)信息,不僅保證了數(shù)據(jù)庫的主賬號(hào)的安全性,還避免了數(shù)據(jù)庫中的數(shù)據(jù)信息的泄露或丟失,通過所述從賬號(hào)確保了對(duì)數(shù)據(jù)庫中的數(shù)據(jù)信息進(jìn)行訪問的安全性和靈活性。
需要注意的是,本申請(qǐng)可在軟件和/或軟件與硬件的組合體中被實(shí)施,例如,可采用專用集成電路(asic)、通用目的計(jì)算機(jī)或任何其他類似硬件設(shè)備來實(shí)現(xiàn)。在一個(gè)實(shí)施例中,本申請(qǐng)的軟件程序可以通過處理器執(zhí)行以實(shí)現(xiàn)上文所述步驟或功能。同樣地,本申請(qǐng)的軟件程序(包括相關(guān)的數(shù)據(jù)結(jié)構(gòu))可以被存儲(chǔ)到計(jì)算機(jī)可讀記錄介質(zhì)中,例如,ram存儲(chǔ)器,磁或光驅(qū)動(dòng)器或軟磁盤及類似設(shè)備。另外,本申請(qǐng)的一些步驟或功能可采用硬件來實(shí)現(xiàn),例如,作為與處理器配合從而執(zhí)行各個(gè)步驟或功能的電路。
另外,本申請(qǐng)的一部分可被應(yīng)用為計(jì)算機(jī)程序產(chǎn)品,例如計(jì)算機(jī)程序指令,當(dāng)其被計(jì)算機(jī)執(zhí)行時(shí),通過該計(jì)算機(jī)的操作,可以調(diào)用或提供根據(jù)本申請(qǐng)的方法和/或技術(shù)方案。而調(diào)用本申請(qǐng)的方法的程序指令,可能被存儲(chǔ)在固定的或可移動(dòng)的記錄介質(zhì)中,和/或通過廣播或其他信號(hào)承載媒體中的數(shù)據(jù)流而被傳輸,和/或被存儲(chǔ)在根據(jù)所述程序指令運(yùn)行的計(jì)算機(jī)設(shè)備的工作存儲(chǔ)器中。在此,根據(jù)本申請(qǐng)的一個(gè)實(shí)施例包括一個(gè)裝置,該裝置包括用于存儲(chǔ)計(jì)算機(jī)程序指令的存儲(chǔ)器和用于執(zhí)行程序指令的處理器,其中,當(dāng)該計(jì)算機(jī)程序指令被該處理器執(zhí)行時(shí),觸發(fā)該裝置運(yùn)行基于前述根據(jù)本申請(qǐng)的多個(gè)實(shí)施例的方法和/或技術(shù)方案。
對(duì)于本領(lǐng)域技術(shù)人員而言,顯然本申請(qǐng)不限于上述示范性實(shí)施例的細(xì)節(jié),而且在不背離本申請(qǐng)的精神或基本特征的情況下,能夠以其他的具體形式實(shí)現(xiàn)本申請(qǐng)。因此,無論從哪一點(diǎn)來看,均應(yīng)將實(shí)施例看作是示范性的,而且是非限制性的,本申請(qǐng)的范圍由所附權(quán)利要求而不是上述說明限定,因此旨在將落在權(quán)利要求的等同要件的含義和范圍內(nèi)的所有變化涵括在本申請(qǐng)內(nèi)。不應(yīng)將權(quán)利要求中的任何附圖標(biāo)記視為限制所涉及的權(quán)利要求。此外,顯然“包括”一詞不排除其他單元或步驟,單數(shù)不排除復(fù)數(shù)。裝置權(quán)利要求中陳述的多個(gè)單元或裝置也可以由一個(gè)單元或裝置通過軟件或者硬件來實(shí)現(xiàn)。第一,第二等詞語用來表示名稱,而并不表示任何特定的順序。