談?wù)凷QL Server 2005中兩種用戶(hù)認(rèn)證方式

    是否一直對(duì)SQL Server 2005里的用戶(hù)的概念不是很清楚,認(rèn)為下面的兩個(gè)用戶(hù)是一個(gè)概念,那就有必要點(diǎn)上一根煙,喝上一品茶,細(xì)細(xì)品味一下這之間的不同了。

左邊的圖標(biāo)出了一個(gè)可以訪問(wèn)AdventureWorks數(shù)據(jù)庫(kù)的用戶(hù),而右邊的圖則標(biāo)出了整個(gè)數(shù)據(jù)庫(kù)服務(wù)器所有的“用戶(hù)”。

    大家知道,SQL Server 2005有兩種用戶(hù)的認(rèn)證方式: Windows和Windows與SQL的混合認(rèn)證。 對(duì)于Windows認(rèn)證大家應(yīng)該比較熟悉, 在這里不多說(shuō)了。 只強(qiáng)調(diào)一點(diǎn),如果能用Windows認(rèn)證就盡量用,因?yàn)橄鄬?duì)SQL認(rèn)證,Windows認(rèn)證還是會(huì)更安全一些。所以它也是SQL SERVER 2005的默認(rèn)方式。下面主要是談一下SQL認(rèn)證中用戶(hù)的一些問(wèn)題。

當(dāng)采用SQL認(rèn)證進(jìn)行開(kāi)發(fā)的時(shí)候,我們經(jīng)常會(huì)準(zhǔn)備一個(gè)數(shù)據(jù)庫(kù)連接串:

Data Source=ServerName; Initial Catalog=DatabaseName; User ID=Pumpkin; Password=!@#$%^&*

    注意這里的Pumpkin,以前我一直都以為這就是SQL SERVER里的用戶(hù),但是通過(guò)搞一搞之后才發(fā)現(xiàn)并非如此。 數(shù)據(jù)庫(kù)連接串里的Pumpkin,在SQL SERVER里嚴(yán)格的說(shuō),應(yīng)該叫Login,其實(shí)它是一個(gè)登錄帳號(hào),并不是數(shù)據(jù)庫(kù)里用來(lái)訪問(wèn)表和操作數(shù)據(jù)的一個(gè)用戶(hù)。即右圖中的Pumpkin。它在數(shù)據(jù)服務(wù)器的Security"Logins的結(jié)點(diǎn)下,這里面列出來(lái)的是所有的登錄帳號(hào)。它們的作用就是用來(lái)連接數(shù)據(jù)庫(kù)并通過(guò)驗(yàn)證。

    有了這個(gè)帳號(hào)之后,其實(shí)我們除了登錄進(jìn)來(lái)之外,其它還是什么都做不了。如果想要訪問(wèn)數(shù)據(jù)庫(kù)服務(wù)器中的某個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù),還要建立一個(gè)USER并給它一個(gè)訪問(wèn)數(shù)據(jù)表的權(quán)限。而這個(gè)用戶(hù)則是左圖中的那個(gè)Pumpkin。

    請(qǐng)注意,我們剛看出了關(guān)鍵的問(wèn)題所在:訪問(wèn)表的用戶(hù)其實(shí)必須是USER Pumpkin,不是那個(gè)LOGIN Pumpkin。所以說(shuō),在SQL SERVER 2005中,如果要訪問(wèn)某張表,那首先需要建立一個(gè)USER,并賦給它訪問(wèn)的權(quán)限。同時(shí),要注意USER與LOGIN的關(guān)系是一對(duì)一的,即某個(gè)USER 在一定時(shí)間內(nèi)只對(duì)應(yīng)著唯一一個(gè)LOGIN。

如果大家還是很困惑,那就來(lái)看一看如何時(shí)用SQL語(yǔ)句來(lái)創(chuàng)建這些用戶(hù)的:

◆創(chuàng)建一個(gè)Login

Code
CREATE LOGIN Pumpkin WITH PASSWORD=’!@#$%^&’

◆創(chuàng)建一個(gè)User

Code
CREATE USER Pumpkin FROM LOGIN Pumpkin


從SQL中應(yīng)該可以看得很清楚,用戶(hù)其實(shí)基于登錄帳號(hào)創(chuàng)建的。我們雙擊右圖的Pumpkin,就可以看到它們的關(guān)系了。

北大青鳥(niǎo)網(wǎng)上報(bào)名
北大青鳥(niǎo)招生簡(jiǎn)章