SQL Server 登入名、伺服器角色、使用者名稱和資料庫角色 --- 解釋
一、基本解釋
登入名:登入伺服器的使用者賬號;
伺服器角色:登入名對該伺服器具有的許可權,角色分多種的,一個角色可以有多個登入名,如作業系統的系統使用者可以有多個。
SQL伺服器角色
sysadmin 可以在 SQL Server 中執行任何活動。
serveradmin 可以設定伺服器範圍的配置選項,關閉伺服器。
setupadmin 可以管理連結伺服器和啟動過程。
securityadmin 可以管理登入和CREATE、DATABASE許可權,還可以讀取錯誤日誌和更改密碼。
processadmin 可以管理在 SQL Server 中執行的程序。
dbcreator 可以建立、更改和除去資料庫。
diskadmin 可以管理磁碟檔案。
bulkadmin 可以執行 BULK INSERT 語句。
使用者名稱:登入資料庫訪問賬號;
資料庫角色:該使用者名稱對該資料庫具有的許可權。
資料庫角色
db_owner 資料庫中有全部許可權。
db_accessadmin 可以新增或刪除使用者 ID。
db_securityadmin 可以管理全部許可權、物件所有權、角色和角色成員資格。
db_ddladmin 可以發出ALL DDL,但不能發出GRANT、REVOKE或DENY語句。
db_backupoperator 可以發出 DBCC、CHECKPOINT 和 BACKUP 語句。
db_datareader 可以選擇資料庫內任何使用者表中的所有資料。
db_datawriter 可以更改資料庫內任何使用者表中的所有資料。
db_denydatareader 不能選擇資料庫內任何使用者表中的任何資料。
db_denydatawriter 不能更改資料庫內任何使用者表中的任何資料。
一般使用sa(登入名)或Windows administration(Windows 整合驗證登陸方式)登陸,這種登入名具有最高的伺服器角色,可對伺服器進行任何操作,登入名具有的使用者名稱是dbo(系統級),具有對所有使用者建立的資料庫中的資料進行一切操作許可權。
二、詳細解釋
1.一個數據庫使用者可以對應多個架構(架構是表容器)。架構裡面包含的是資料庫表。
2.一個數據庫角色有可能涉及多個架構。資料庫角色對應的是許可權。
3.一個使用者對應一個數據庫角色。
4.登入名與資料庫使用者在伺服器級別是一對多的;在資料庫級別是一對一的。
伺服器登入名:指有許可權登入到某伺服器的使用者;
伺服器角色:指一組固定的伺服器使用者,預設有9組;
- 登入名一定屬於某些角色,預設為public
- 伺服器角色不容許更改
- 登入後也不一定有許可權操作資料庫
資料庫使用者:指有許可權能操作資料庫的使用者;
資料庫角色:指一組固定的有某些許可權的資料庫角色;
資料庫架構:指資料庫物件的容器;
- 資料庫使用者對應於伺服器登入名以便登入者可以操作資料庫
- 資料庫角色可以新增,可以定製不同許可權
- 資料庫架構,類似於資料庫物件的名稱空間,使用者通過架構訪問資料庫物件
伺服器角色
sysadmin --在 SQL Server 中進行任何活動。該角色的許可權跨越所有其它固定伺服器角色。
serveradmin --配置伺服器範圍的設定。
setupadmin --新增和刪除連結伺服器,並執行某些系統儲存過程(如 sp_serveroption)。
securityadmin --管理伺服器登入。
processadmin --管理在 SQL Server 例項中執行的程序。
dbcreator --建立和改變資料庫。
diskadmin --管理磁碟檔案。
bulkadmin --執行 BULK INSERT 語句。
資料庫角色
public
--public 角色是一個特殊的資料庫角色,每個資料庫使用者都屬於它。public 角色:
--捕獲資料庫中使用者的所有預設許可權。
--無法將使用者、組或角色指派給它,因為預設情況下它們即屬於該角色。
--含在每個資料庫中,包括 master、msdb、tempdb、model 和所有使用者資料庫。
--無法除去。
db_owner
--進行所有資料庫角色的活動,以及資料庫中的其它維護和配置活動。
--該角色的許可權跨越所有其它固定資料庫角色。
db_accessadmin
--在資料庫中新增或刪除 Windows NT 4.0 或 Windows 2000 組和使用者以及 SQL Server 使用者。
db_datareader
--檢視來自資料庫中所有使用者表的全部資料。
db_datawriter
--新增、更改或刪除來自資料庫中所有使用者表的資料
db_ddladmin
--新增、修改或除去資料庫中的物件(執行所有 DDL)
db_securityadmin
--管理 SQL Server 2000 資料庫角色的角色和成員,並管理資料庫中的語句和物件許可權
db_backupoperator
--有備份資料庫的許可權
db_denydatareader
--拒絕選擇資料庫資料的許可權
db_denydatawriter
--拒絕更改資料庫資料的許可權
先說sqlserver裡面的資料庫級別設定:
伺服器級 -> 資料庫級 -> 架構級 - > 資料物件級,比如說:Server.DataBase1.dbo.Table1;這裡的意思就是Table1這個表屬於dbo這個架構
,dbo這個架構屬於DataBase1這個資料庫,DataBase1這個資料庫屬於Server這個伺服器。裡面的架構其實就是一個容器,好像就是面向物件裡面的
名稱空間,一個使用者可以擁有多個架構,但是不能對沒有擁有的架構進行操作。一個數據庫角色,是對不同架構裡面資料物件的許可權組織,也有可能涉及到
多個架構,當某一個使用者被轉換成一種資料庫角色的時候,假如這個使用者本身不擁有某一個架構而該資料庫角色擁有,那它當它對那個架構進行操作的時候就會出錯。
角色,角色意味著一種身份,在資料庫伺服器裡是對一系列許可權的組織。
伺服器登入名,指有許可權登入到某伺服器的使用者,可以在有許可權的情況下建立新的登入名,超級管理員的登入名是sa
伺服器角色,指一組固定的伺服器使用者,預設有9組;
- 登入名一定屬於某些角色,預設為public
- 伺服器角色不容許更改
- 登入後也不一定有許可權操作資料庫
資料庫使用者,指有許可權能操作資料庫的使用者;
資料庫角色,指一組固定的有某些許可權的資料庫角色;
資料庫架構,指資料庫物件的容器;
- 資料庫使用者對應於伺服器登入名以便登入者可以操作資料庫
- 資料庫角色可以新增,可以定製不同許可權
- 資料庫架構,類似於資料庫物件的名稱空間,使用者通過架構訪問資料庫物件
登入名與使用者在伺服器級是一對多的,而在資料庫裡是一對一的。比如說Server這個伺服器有4個數據庫,DB1,DB2,DB3,DB4,每個資料庫都有一個使用者USER1,USER2,USER3,USER,在建立一個登入名my的時候可以通過使用者對映的操作,為這個登入名在每一個具體的資料庫中指定使用者,比如可以如下指定my在DB1中的使用者是USER1,它是在使用資料庫的時候是唯一的,my在不能再DB1中切換使用者,除非重新指定它對DB1資料庫的使用者對映。
使用者一般是受許可權管理的,在新建一個使用者的時候是這樣的:
需要指定它的登入名,這也是對映操作的一部分,同時可以指定它的預設架構,如不指定就是dbo,也可以指定它擁有的其它架構和角色成員,不過沒有預設資料庫角色。
下面看看新建一個角色:
在新建的時候可以指定這個角色擁有那些架構,但是這些結構必須是這個資料庫裡面的,預設架構為當前使用者使用的架構,比如當前使用者的架構是dbo,則在角上許可權定義時所使用的預設架構就是dbo,當然也可以指定其它的架構。