MySQL數(shù)據(jù)常見(jiàn)的保護(hù)方式_MySQL數(shù)據(jù)保護(hù)有哪些方式
自動(dòng)的數(shù)據(jù)庫(kù)備份不同,對(duì)系統(tǒng)管理員來(lái)說(shuō),保護(hù)數(shù)據(jù)免受未授權(quán)用戶的侵犯需要采取一定的行動(dòng)。下面由學(xué)習(xí)啦小編為大家整理的MySQL數(shù)據(jù)保護(hù)方式,希望大家喜歡!
MySQL數(shù)據(jù)保護(hù)方式
1、刪除授權(quán)表中的通配符
MySQL訪問(wèn)控制系統(tǒng)通過(guò)一系列所謂的授權(quán)表運(yùn)行,從而對(duì)數(shù)據(jù)庫(kù)、表格或欄目級(jí)別的用戶訪問(wèn)權(quán)利進(jìn)行定義。但這些表格允許管理員為一名用戶設(shè)定一攬子許可,或一組應(yīng)用通配符的表格。這樣做會(huì)有潛在的危險(xiǎn),因?yàn)楹诳涂赡軙?huì)利用一個(gè)受限的賬戶來(lái)訪問(wèn)系統(tǒng)的其他部分。由于這一原因,在設(shè)置用戶特權(quán)時(shí)要謹(jǐn)慎,始終保證用戶只能訪問(wèn)他們所需的內(nèi)容。在給個(gè)別用戶設(shè)定超級(jí)特權(quán)時(shí)要尤其小心,因?yàn)檫@種級(jí)別允許普通用戶修改服務(wù)器的基本配置,并訪問(wèn)整個(gè)數(shù)據(jù)庫(kù)。
建議:對(duì)每個(gè)用戶賬戶應(yīng)用顯示特權(quán)命令,以審查授權(quán)表,了解應(yīng)用通配符許可是否恰當(dāng)。
2、要求使用安全密碼
用戶賬號(hào)的安全與用來(lái)保護(hù)它們的密碼密切相關(guān)。因此,在安裝MySQL時(shí)第一件事就應(yīng)該設(shè)置MySQL根賬號(hào)的密碼(默認(rèn)為空)。修復(fù)這一漏洞后,接下來(lái)就應(yīng)要求每個(gè)用戶賬號(hào)使用一個(gè)密碼,且不要使用生日、用戶名或字典中的單詞這些容易識(shí)別的啟發(fā)式密碼。
建議:應(yīng)用MySQL-安全-授權(quán)選項(xiàng)避免使用舊的,不大安全的MySQL密碼格式。
3、檢查配置文件許可
一般來(lái)說(shuō),要使服務(wù)器連接更為快速方便,單個(gè)用戶和服務(wù)器管理員必須把他們的用戶賬號(hào)密碼存儲(chǔ)在單用戶MySQL選項(xiàng)文件中。但是,這種密碼是以純文本形式存儲(chǔ)在文件中的,很容易就可以查閱。因此,必須保證這樣的單用戶配置文件不被系統(tǒng)中的其他用戶查閱,且將它存儲(chǔ)在非公共的位置。理想情況下,你希望單用戶配置文件保存在用戶的根目錄,許可為0600。
4、加密客戶與服務(wù)器之間數(shù)據(jù)傳送 :
MySQL(及其它)客戶與服務(wù)器構(gòu)架的一個(gè)重要問(wèn)題就是通過(guò)網(wǎng)絡(luò)傳送數(shù)據(jù)時(shí)的安全問(wèn)題。如果客戶與服務(wù)器間的交互以純文本形式發(fā)生,黑客就可能“嗅出”被傳送的數(shù)據(jù)包,從而獲得機(jī)密信息。你可以通過(guò)激活MySQL配置中的SSL,或應(yīng)用一個(gè)OpenSSH這樣的安全應(yīng)用來(lái)為傳送的數(shù)據(jù)建立一個(gè)安全的加密“通道”,以關(guān)閉這一漏洞。以這種形式加密客戶與服務(wù)器連接可使未授權(quán)用戶極難查閱往來(lái)的數(shù)據(jù)。
5、禁止遠(yuǎn)程訪問(wèn)
如果用戶不需要遠(yuǎn)程訪問(wèn)服務(wù)器,你可以迫使所有MySQL連接通過(guò)UNIX插槽文件來(lái)完成,從而大大減少網(wǎng)絡(luò)受攻擊的風(fēng)險(xiǎn)。這一過(guò)程可通過(guò)跳過(guò)網(wǎng)絡(luò)選項(xiàng)啟動(dòng)服務(wù)器來(lái)完成。這樣可以阻止TCP/IP網(wǎng)絡(luò)連接到MySQL上,保證沒(méi)有用戶可以遠(yuǎn)程連接系統(tǒng)。
建議:可以在MySQL服務(wù)器配置中添加捆綁地址127.0.0.1指令來(lái)增強(qiáng)這一功能,迫使MySQL捆綁當(dāng)?shù)貦C(jī)器的IP地址來(lái)保證只有同一系統(tǒng)中的用戶可以連接到MySQL。
6、積極監(jiān)控MySQL訪問(wèn)記錄
MySQL中帶有很多不同的日志文件,它們記錄客戶連接,查詢和服務(wù)器錯(cuò)誤。其中,最重要的是一般查詢?nèi)罩?,它用時(shí)間標(biāo)簽記錄每名客戶的連接和中斷時(shí)間,并記錄客戶執(zhí)行的每個(gè)查詢。如果你懷疑發(fā)生了不尋常的行為,如網(wǎng)絡(luò)入侵,那么監(jiān)控這個(gè)日志以了解行為的來(lái)源是個(gè)好方法。
保護(hù)你的MySQL數(shù)據(jù)庫(kù)是一個(gè)日常工作。因此,即使完成了上述步驟,也還需要你利用更多的時(shí)間去了解更多的安全建議,積極監(jiān)控并更新你的系統(tǒng)安全。
SQL數(shù)據(jù)使用方法
1、 isnull();函數(shù)
在SQL Server 中經(jīng)常會(huì)遇到一些字段為空值,這里可以使用isnull()這個(gè)函數(shù)來(lái)做判斷;eg:
select isnull(Table_column,'Test') as column from Table
這個(gè)語(yǔ)句意思就是:從Table表中取字段Table_column,如果該字段值為空,則用“Test”字符來(lái)代替;
2、sysobject
SQL Server中有一個(gè)系統(tǒng)對(duì)象表 sysobject 這個(gè)表里存儲(chǔ)了數(shù)據(jù)庫(kù)中所有的對(duì)象,比如約束,默認(rèn)值,日志,規(guī)則,存儲(chǔ)過(guò)程,表名等等,詳細(xì)可以查看幫助手冊(cè);
select name from sysobject where Xtype='U'
這語(yǔ)句就是講數(shù)據(jù)庫(kù)中所有的表名查出來(lái);
Xtype可以取值為以下:
C = CHECK 約束
D = 默認(rèn)值或 DEFAULT 約束
F = FOREIGN KEY 約束
FN = 標(biāo)量函數(shù)
IF = 內(nèi)嵌表函數(shù)
K = PRIMARY KEY 或 UNIQUE 約束
L = 日志
P = 存儲(chǔ)過(guò)程
R = 規(guī)則
RF = 復(fù)制篩選存儲(chǔ)過(guò)程
S = 系統(tǒng)表
TF = 表函數(shù)
TR = 觸發(fā)器
U = 用戶表
V = 視圖
X = 擴(kuò)展存儲(chǔ)過(guò)程
AF = 聚合函數(shù) (CLR)
FS = 程序集 (CLR) 標(biāo)量函數(shù)
FT = 程序集 (CLR) 表值函數(shù)
IF = 內(nèi)聯(lián)表函數(shù)
IT = 內(nèi)部表
PC = 程序集 (CLR) 存儲(chǔ)過(guò)程
PK = PRIMARY KEY 約束(type 為 K)
SN = 同義詞
SQ = 服務(wù)隊(duì)列
TA = 程序集 (CLR) DML 觸發(fā)器
TT = 表類型
UQ = UNIQUE 約束(type 為 K)
3、SQL Server 2008工具使用;
新建立一個(gè)數(shù)據(jù)庫(kù)表時(shí),當(dāng)建立好了,但又要修改,有時(shí)候DB會(huì)阻止對(duì)表結(jié)構(gòu)的修改,需要設(shè)置如下:
SQLServer----"tool"----"option"----"Designers"----"prevent saving changes that require table recreating" 去掉這個(gè)“阻止修改”選項(xiàng);
4、nvarchar(Max)
SQL Server 中Max是最大值,其定義是4000,nvarchar(Max) 其實(shí)就是nvarchar(4000);
5、select * from table
在數(shù)據(jù)庫(kù)中,一般小數(shù)據(jù)量的select * from table 不會(huì)發(fā)覺(jué)有什么慢,但是一旦到了大數(shù)據(jù)量的數(shù)據(jù)庫(kù)中,這種查詢是最慢的最耗時(shí)間的!數(shù)據(jù)庫(kù)的開(kāi)銷會(huì)很大!
所以不要輕易的在大數(shù)據(jù)表上執(zhí)行不帶條件的select cout(*) from table,不僅耗時(shí)大,而且會(huì)把這個(gè)數(shù)據(jù)庫(kù)表上S鎖,在cout(*)期間,任何有關(guān)和該表的insert update delete都會(huì)被阻止!!!
6、getdate()
getdate()函數(shù)用于獲得當(dāng)前系統(tǒng)的系統(tǒng)時(shí)間這個(gè)精確到了毫秒:eg:"2013-12-12 12:23:33:321"
7、newid()
這個(gè)不用多說(shuō)了,做主鍵ID時(shí)最常用了,此函數(shù)可以生成一個(gè)唯一的guid,32位長(zhǎng),這個(gè)強(qiáng)度大,而且由數(shù)據(jù)庫(kù)系統(tǒng)生成,具有唯一性!
SQLServer登錄連接失敗怎么辦
步驟一:打開(kāi)SQL Server 配置管理器
雙擊SQL Server服務(wù)
步驟二:如果雙擊后出現(xiàn)了一列服務(wù)列表
(我的情況是沒(méi)有出現(xiàn)),直接找到SQL Server(MSSQLSERVER),啟動(dòng)該服務(wù)后即可登錄,
如果該服務(wù)啟動(dòng)不了??梢栽谟?jì)算機(jī)(右擊)-管理-服務(wù)與程序中找到該服務(wù),點(diǎn)擊查看屬性,并在"登錄"標(biāo)簽中選擇"本地系統(tǒng)賬戶",選擇后再啟動(dòng)該服務(wù)。
(如果步驟二開(kāi)始時(shí)沒(méi)有出現(xiàn)一系列的服務(wù)列表而是出現(xiàn)"遠(yuǎn)程過(guò)程調(diào)用失敗",就進(jìn)行步驟三)
步驟三:出現(xiàn)該情況的原因
因?yàn)榘惭bVisual Studio 2013或者2012版本的時(shí)候,會(huì)自動(dòng)安裝"Microsoft SQL Server 2013(2012) Express LocalDB"服務(wù),導(dǎo)致原本的SQL2008無(wú)法正常工作。
解決辦法很簡(jiǎn)單,在控制面板-程序與功能,找到"Microsoft SQL Server 2013(2012) Express LocalDB"并直接卸載掉,然后打開(kāi)SQL Server 配置管理器,就會(huì)顯示正常使用。
解決后再回到步驟二即可。