SQL Server 2005登入名,使用者名稱,角色,架構之間的關係
SQL Server 2005對2000進行了很大的改進,而使用者關係這部分也變得相當複雜了,很多朋友都對此一知半解!下面,我將把我應用中總結的和大家分享下,先從概念入手,希望對不理解的朋友有點提示。
今天我們要說的包括伺服器登入名ServerLogin,伺服器角色Server Role,資料庫使用者DB User,資料庫架構DBSchema,資料庫角色DB Role。以上幾個名詞應該從伺服器與資料庫來區分,伺服器包含一到多個數據庫,其中:
伺服器登入名:指有許可權登入到某伺服器的使用者;
伺服器角色:指一組固定的伺服器使用者,預設有9組;
·
· 伺服器角色不容許更改
· 登入後也不一定有許可權操作資料庫
伺服器角色 |
含義 |
Bulkadmin |
可以執行 BULK INSERT 語句 |
Dbcreator |
建立、更改、刪除和還原任何資料庫 |
Diskadmin |
管理磁碟檔案 |
Processadmin |
可以終止在資料庫引擎 例項中執行的程序 |
Securityadmin |
可以管理登入名及其屬性。具有 GRANT、DENY 和 REVOKE 伺服器和資料庫級別的許可權。此外,還可以重置 SQL Server 登入名的密碼 |
Serveradmin |
可以更改伺服器範圍的配置選項和關閉伺服器 |
Setupadmin |
可以新增和刪除連結伺服器,並可以執行某些系統儲存過程(如 sp_serveroption) |
Sysadmin |
在SQL Server中進行任何活動。該角色的許可權跨越所有其他固定伺服器角色。預設情況下,Windows BUILTIN\Administrators 組(本地管理員組)的所有成員都是 sysadmin 固定伺服器角色的成員 |
資料庫使用者:指有許可權能操作資料庫的使用者;
資料庫角色:指一組固定的有某些許可權的資料庫角色;
固定資料庫角色 |
說 明 |
db_owner |
可以執行資料庫中技術所有動作的使用者 |
db_accessadmin |
可以新增、刪除使用者的使用者 |
db_datareader |
可以檢視所有資料庫中使用者表內資料的使用者 |
db_datawriter |
可以新增、修改或刪除所有資料庫中使用者表內資料的使用者 |
db_ddladmin |
可以在資料庫中執行所有DDL操作的使用者 |
db_securityadmin |
可以管理資料庫中與安全許可權有關所有動作的使用者 |
db_backoperator |
可以備份資料庫的使用者(並可以釋出DBCC和CHECKPOINT語句,這兩個語句一般在備份前都會被執行) |
db_denydatareader |
不能看到資料庫中任何資料的使用者 |
db_denydatawriter |
不能改變資料庫中任何資料的使用者 |
資料庫架構:指資料庫物件的容器;
· 資料庫使用者對應於伺服器登入名以便登入者可以操作資料庫
· 資料庫角色可以新增,可以定製不同許可權
· 資料庫架構,類似於資料庫物件的名稱空間,使用者通過架構訪問資料庫物件
而通過下圖可以讓這些概念清晰一些:
1. 伺服器登入名屬於某組伺服器角色;
2. 伺服器登入名需要於資料庫的使用者對映後才擁有操作資料庫的許可權
3. 資料庫使用者屬於某組資料庫角色以獲取操作資料庫的許可權
4. 資料庫角色擁有對應的資料庫架構,資料庫使用者可以通過角色直接擁有架構
5. 資料庫使用者有預設架構,寫SQL語句可以直接以“物件名”訪問
6. 非預設架構則要以“架構名.物件名”訪問
因此,新建一個非SA賬戶並建立資料庫的過程可以如下:
1、新建登入名Login1
2、新建資料庫DB1
3、新建DB1的架構Schema1
4、新建BD1的使用者User1,登入名對應Login1,預設架構選擇Schema1,角色選擇db_owner
5、在登入名Login1的屬性窗口裡選擇“使用者對映”,勾選DB1,在使用者裡填寫User1,預設架構選擇"Schema1"
6、至此,新建表名會是Schema1.Table1,其他物件也如此
7、當然還可以新建其他架構的物件Schema2,只有User1擁有該架構,一樣可以訪問,如Schema2.Table2
值得注意的是,當為登入對映資料庫使用者的時候,多個數據庫可以有相同名稱的使用者,而單獨為某個資料庫新建的使用者,如User1,則在其他資料庫裡不允許同名。