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

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

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

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

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

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

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

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

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

如果大家還是很困惑,那就來看一看如何時用SQL語句來創(chuàng)建這些用戶的:

◆創(chuàng)建一個Login

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

◆創(chuàng)建一個User

Code
CREATE USER Pumpkin FROM LOGIN Pumpkin


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

北大青鳥網(wǎng)上報名
北大青鳥招生簡章