當前位置:首頁 » 編程語言 » sqlserver用戶角色

sqlserver用戶角色

發布時間: 2022-05-19 04:58:37

Ⅰ 請問在sqlServer 2000中用戶和角色的區別以及對象許可權和語句許可權的區別。麻煩用規范語言作答。

/*--示例說明
示例在資料庫pubs中創建一個擁有表jobs的所有許可權、擁有表titles的SELECT許可權的角色r_test
隨後創建了一個登錄l_test,然後在資料庫pubs中為登錄l_test創建了用戶賬戶u_test
同時將用戶賬戶u_test添加到角色r_test中,使其通過許可權繼承獲取了與角色r_test一樣的許可權
最後使用DENY語句拒絕了用戶賬戶u_test對表titles的SELECT許可權。
經過這樣的處理,使用l_test登錄SQL Server實例後,它只具有表jobs的所有許可權。
--*/

USE pubs

--創建角色 r_test
EXEC sp_addrole 'r_test'

--授予 r_test 對 jobs 表的所有許可權
GRANT ALL ON jobs TO r_test
--授予角色 r_test 對 titles 表的 SELECT 許可權
GRANT SELECT ON titles TO r_test

--添加登錄 l_test,設置密碼為pwd,默認資料庫為pubs
EXEC sp_addlogin 'l_test','pwd','pubs'

--為登錄 l_test 在資料庫 pubs 中添加安全賬戶 u_test
EXEC sp_grantdbaccess 'l_test','u_test'

--添加 u_test 為角色 r_test 的成員
EXEC sp_addrolemember 'r_test','u_test'

--拒絕安全賬戶 u_test 對 titles 表的 SELECT 許可權
DENY SELECT ON titles TO u_test

/*--完成上述步驟後,用 l_test 登錄,可以對jobs表進行所有操作,但無法對titles表查詢,雖然角色 r_test 有titles表的select許可權,但已經在安全賬戶中明確拒絕了對titles的select許可權,所以l_test無titles表的select許可權--*/

--從資料庫 pubs 中刪除安全賬戶
EXEC sp_revokedbaccess 'u_test'

--刪除登錄 l_test
EXEC sp_droplogin 'l_test'

--刪除角色 r_test
EXEC sp_droprole 'r_test'

首先,做好用戶安全:

--簡單的,只允許sql的用戶訪問sql(防止利用administrator組用戶訪問)

1.企業管理器--右鍵SQL實例--屬性--安全性--身份驗證--選擇"sql server和windows"--確定

2.企業管理器--安全性--登陸--右鍵sa--設置密碼--其他用戶也設置密碼

3.刪除用戶:
BUILTIN\Administrators
<機器名>\Administrator --這個用戶不一定有
這樣可以防止用windows身份登陸SQL

4.設置進入企業管理器需要輸入密碼
在企業管理器中
--右鍵你的伺服器實例(就是那個有綠色圖標的)
--編輯SQL Server注冊屬性
--選擇"使用 SQL Server 身份驗證"
--並勾選"總是提示輸入登錄名和密碼"
--確定

--經過上面的設置,你的SQL Server基本上算是安全了.

------------------------------------------------------------------------

其次,改默認埠,隱藏伺服器,減少被攻擊的可能性

SQL Server伺服器
--開始
--程序
--Microsoft SQL Server
--伺服器網路實用工具
--啟用的協議中"TCP/IP"
--屬性
--默認埠,輸入一個自已定義的埠,比如2433
--勾選隱藏伺服器

----------------------------------------------------------------------------

--管好sql的用戶,防止訪問他不該訪問的資料庫(總控制,明細還可以控制他對於某個資料庫的具體對象具有的許可權)

--切換到你新增的用戶要控制的資料庫
use 你的庫名
go

--新增用戶
exec sp_addlogin 'test' --添加登錄
exec sp_grantdbaccess N'test' --使其成為當前資料庫的合法用戶
exec sp_addrolemember N'db_owner', N'test' --授予對自己資料庫的所有許可權

--這樣創建的用戶就只能訪問自己的資料庫,及資料庫中包含了guest用戶的公共表
go

--刪除測試用戶
exec sp_revokedbaccess N'test' --移除對資料庫的訪問許可權
exec sp_droplogin N'test' --刪除登錄

如果在企業管理器中創建的話,就用:

企業管理器--安全性--右鍵登錄--新建登錄

常規項
--名稱中輸入用戶名
--身份驗證方式根據你的需要選擇(如果是使用windows身份驗證,則要先在操作系統的用戶中新建用戶)
--默認設置中,選擇你新建的用戶要訪問的資料庫名

伺服器角色項
這個裡面不要選擇任何東西

資料庫訪問項
勾選你創建的用戶需要訪問的資料庫名
資料庫角色中允許,勾選"public","db_ownew"

確定,這樣建好的用戶與上面語句建立的用戶一樣
---------------------------------------------------------------------------

最後一步,為具體的用戶設置具體的訪問許可權,這個可以參考下面的最簡示例:

--添加只允許訪問指定表的用戶:
exec sp_addlogin '用戶名','密碼','默認資料庫名'

--添加到資料庫
exec sp_grantdbaccess '用戶名'

--分配整表許可權
GRANT SELECT , INSERT , UPDATE , DELETE ON table1 TO [用戶名]

--分配許可權到具體的列
GRANT SELECT , UPDATE ON table1(id,AA) TO [用戶名]

-------------------------------------------------------------------
至於具體的安全設置和理論知道,參考SQL聯機幫助

Ⅱ sqlserver中的用戶可以創建幾種資料庫角色

SQL Server 2000 和 SQL Server 7.0 版在安裝過程中定義幾個固定角色。可以在這些角色中添加用戶以獲得相關的管理許可權。下面是伺服器范圍內的角色。

固定伺服器角色 描述
sysadmin 可以在 SQL Server 中執行任何活動。
serveradmin 可以設置伺服器范圍的配置選項,關閉伺服器。
setupadmin 可以管理鏈接伺服器和啟動過程。
securityadmin 可以管理登錄和 CREATE DATABASE 許可權,還可以讀取錯誤日誌和更改密碼。
processadmin 可以管理在 SQL Server 中運行的進程。
dbcreator 可以創建、更改和除去資料庫。
diskadmin 可以管理磁碟文件。
bulkadmin 可以執行 BULK INSERT 語句。

可以從 sp_helpsrvrole 獲得固定伺服器角色的列表,可以從 sp_srvrolepermission 獲得每個角色的特定許可權。

每個資料庫都有一系列固定資料庫角色。雖然每個資料庫中都存在名稱相同的角色,但各個角色的作用域只是在特定的資料庫內。例如,如果 Database1 和 Database2 中都有叫 UserX 的用戶 ID,將 Database1 中的 UserX 添加到 Database1 的 db_owner 固定資料庫角色中,對 Database2 中的 UserX 是否是 Database2 的 db_owner 角色成員沒有任何影響。

固定資料庫角色 描述
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 不能更改資料庫內任何用戶表中的任何數據。

可以從 sp_helpdbfixedrole 獲得固定資料庫角色的列表,可以從 sp_dbfixedrolepermission 獲得每個角色的特定許可權。

資料庫中的每個用戶都屬於 public 資料庫角色。如果想讓資料庫中的每個用戶都能有某個特定的許可權,則將該許可權指派給 public 角色。如果沒有給用戶專門授予對某個對象的許可權,他們就使用指派給 public 角色的許可權。

Ⅲ sqlserver2008創建新用戶時的架構和角色怎麼選

sa是登錄名 可以在sqlserver管理器的伺服器級別下的安全性-> 登錄名中查看
或者在目錄視圖中sys.server_principals 和 sys.sql_logins
(select *
from sys.sql_logins
go
select *
from sys.server_principals)中查看
默認情況下,sa登錄名在各資料庫中對應的用戶是dbo用戶,
dbo是資料庫的默認用戶。sql Server 安裝之後,dbo用戶就自動
存在了。dbo用戶擁有在資料庫中操作的所有許可權。SQL_USER與 WINDOWS_USER
在你剛進入sqlserver管理器的時候有身份驗證選項有Windows身份驗證和sql server身份驗證
本地機器上當然可以選擇Windows身份驗證,遠程就只有sql server身份驗證
以上僅是個人理解有誤之處還請告知

Ⅳ SQLServer的用戶和系統用戶是什麼關系

登錄名:伺服器方的一個實體,使用一個登錄名只能進入伺服器,但是不能讓用戶訪問伺服器中的資料庫資源。每個登錄名的定義存放在master資料庫的syslogins表中 用戶名:一個或多個登錄對象在資料庫中的映射,可以對用戶對象進行授權,以便為登錄對象提供對資料庫的訪問許可權。用戶定義信息存放在每個資料庫的sysusers表中。 SQLSERVER把登錄名與用戶名的關系稱為映射。用登錄名登錄SQLSERVER後,在訪問各個資料庫時,SQLSERVER會自動查詢此資料庫中是否存在與此登錄名關聯的用戶名,若存在就使用此用戶的許可權訪問此資料庫,若不存在就是用guest用戶訪問此資料庫 一個登錄名可以被授權訪問多個資料庫,但一個登錄名在每個資料庫中只能映射一次。即一個登錄可對應多個用戶,一個用戶也可以被多個登錄使用。好比SQLSERVER就象一棟大樓,裡面的每個房間都是一個資料庫.登錄名只是進入大樓的鑰匙,而用戶名則是進入房間的鑰匙.一個登錄名可以有多個房間的鑰匙,但一個登錄名在一個房間只能擁有此房間的一把鑰匙。 鏈接或登錄Sql Server伺服器時是用的登錄名而非用戶名登錄的,程序裡面的鏈接字元串中的用戶名也是指登錄名 我們常見的dbo(用戶名)是指以sa(登錄名)或windows administration(Windows集成驗證登錄方式)登錄的用戶,也就是說資料庫管理員在SQLSERVER中的用戶名就叫dbo,而不叫 sa,這一點看起來有點蹊蹺,因為通常用戶名與登錄名相同(不是強制相同,但為了一目瞭然通常都在創建用戶名時使用與登錄名相同的名字),例如創建了一個登錄名稱為me,那麼可以為該登錄名me在指定的資料庫中添加一個同名用戶,使登錄名me能夠訪問該資料庫中的數據.當在資料庫中添加了一個用戶me 後,之後以me登錄名登錄時在該資料庫中創建的一切對象(表,函數,存儲過程等)的所有者都為me,如me.table1,me.fn_test(),而不是dbo.table1,dbo.fn_test(). SQL Server中還有一個特殊的資料庫角色public,它存在於每一個資料庫中,包括系統資料庫,如master、msdb、model和用戶資料庫,資料庫的所有用戶都屬於public角色,並且不能從public角色中刪除。

Ⅳ 確定SQLServer用戶是否屬於某個角色

對資料庫正常功能的訪問常常取決於賦予指定用戶的權利。例如,管理人員可能需要(一定的)許可權來運行特定的查詢或者存儲過程,而向他們進行報告的用戶則沒有(這一許可權)。對於一個很小的機構而言,你可以為具體的用戶賦予具體的權利,但是隨著用戶數量的增長,這種方法會變得越來越難以處理。即使只有50個用戶,維護工作也會成為你的惡夢。 包含我們感興趣數據的表格是sysusers和sysmembers。前面一個表格包含有關於用戶和角色的數據,而這兩者由IsSQLRole這個數據列來區分,如果數據行表示的是一個角色而不是一個用戶,那麼IsSQLRole數據列就包含有1。下面的代碼列出了所有的用戶和角色: SELECT Member = Users.name, Role = Roles.Name FROM sysusers Users, sysusers Roles, sysmembers Members WHERE Roles.uid = Members.groupuid AND Roles.issqlrole = 1 AND Users.uid = Members.memberuid ORDER BY 2, 1 要列出屬於指定角色的成員的用戶,就要把代碼更改為下面這樣: DECLARE @role varchar(100) SET @role = 'Managers' SELECT MemberName = Users.name, RoleName = Roles.Name FROM sysusers Users, sysusers Roles, sysmembers Members WHERE Roles.name = @role AND Roles.uid = Members.groupuid AND Roles.issqlrole = 1 AND Users.uid = Members.memberuid 你可能更習慣把這段代碼轉化成用戶定義函數(user-defined function,UDF),它會返回一個布爾函數,用來指示當前用戶是否是所關心的角色的成員。把變數@role變成一個參數,並傳遞它而不是定義它,就像我在上面做的一樣。利用它,你可以編寫出自己的應用程序代碼,在任何你需要確定給定用戶角色的時候調用這個函數。

Ⅵ SQL試題 解答題: 角色有哪幾種,角色和用戶有哪些關系

--用戶指的是資料庫用戶,單純的用戶是沒有任何許可權的,需要給相應的角色才可以
--不明白可以隨時來問我,希望採納
SqlServer固定伺服器角色:
1、bulkadmin伺服器級許可權已授予:ADMINISTERBULKOPERATIONS
2、dbcreator伺服器級許可權已授予:CREATEDATABASE
3、diskadmin伺服器級許可權已授予:ALTERRESOURCESSqlServer2005固定伺服器角色:
4、processadmin伺服器級許可權已授予:ALTERANYCONNECTION、ALTERSERVERSTATE
5、securityadmin伺服器級許可權已授予:ALTERANYLOGIN6、serveradmin伺服器級許可權已授予:ALTERANYENDPOINT、ALTERRESOURCES、ALTERSERVERSTATE、ALTERSETTINGS、SHUTDOWN、VIEWSERVERSTATE
7、setupadmin伺服器級許可權已授予:固定伺服器角色:
8、sysadmin伺服器級許可權已使用GRANT選項授予:CONTROLSERVER

Ⅶ 關於SQL Server創建登錄名,用戶,角色方面的

--通過sp_addlogin創建登錄名
execute sp_addlogin 'zhangsan','112233'

use test
go
--指定登錄名為zhangsan,並且創建test資料庫中的用戶zzx
execute sp_grantdbaccess 'zhangsan','zzx'
--授予用戶zzx擁有businessDeal表的select許可權
grant select on businessDeal to zzx
--添加資料庫角色
execute sp_addrole 'work'
--添加角色為work的成員zzx
execute sp_addrolemember 'work','zzx'
--設置角色work擁有BusinessDeal表的update許可權
grant update on BusinessDeal to work

Ⅷ 請教關於sqlserver登錄賬戶和用戶的關系

1. 首先在 SQL Server 伺服器級別,創建登陸帳戶(create login)
--創建登陸帳戶(create login)
create login dba with password='abcd1234@', default_database=mydb
登陸帳戶名為:「dba」,登陸密碼:abcd1234@」,默認連接到的資料庫:「mydb」。 這時候,dba 帳戶就可以連接到 SQL Server 伺服器上了。但是此時還不能 訪問資料庫中的對象(嚴格的說,此時 dba 帳戶默認是 guest 資料庫用戶身份, 可以訪問 guest 能夠訪問的資料庫對象)。

要使 dba 帳戶能夠在 mydb 資料庫中訪問自己需要的對象, 需要在資料庫 mydb 中建立一個「資料庫用戶」,賦予這個「資料庫用戶」 某些訪問許可權,並且把登陸帳戶「dba」 和這個「資料庫用戶」 映射起來。 習慣上,「資料庫用戶」 的名字和 「登陸帳戶」的名字相同,即:「dba」。 創建「資料庫用戶」和建立映射關系只需要一步即可完成:

2. 創建資料庫用戶(create user):
--為登陸賬戶創建資料庫用戶(create user),在mydb資料庫中的security中的user下可以找到新創建的dba
create user dba for login dba with default_schema=dbo
並指定資料庫用戶「dba」 的默認 schema 是「dbo」。這意味著 用戶「dba」 在執行「select * from t」,實際上執行的是 「select * from dbo.t」。

3. 通過加入資料庫角色,賦予資料庫用戶「dba」許可權:
--通過加入資料庫角色,賦予資料庫用戶「db_owner」許可權
exec sp_addrolemember 'db_owner', 'dba'
此時,dba 就可以全權管理資料庫 mydb 中的對象了。

Ⅸ 錄,用戶,角色的概念如何區分三者在sql server中有何關系

架構(Schema)是形成單個命名空間的資料庫實體的集合。命名空間是一個集合,其中每個元素的名稱都是唯一的。可以將架構看成一個存放資料庫中對象的一個容器。架構實際上在sqlserver2000中就已經存在,當我們使用查詢分析器去查詢一個表的時候,一個完整的表的名稱應該包括伺服器名.資料庫名.用戶名.對象名,而在sqlserver2005中一個表的完全限定名稱應該為伺服器名.資料庫名.架構名.對象名在2000中,假如有一個賬戶tt在test資料庫中創建了一張表table1的時候,在伺服器上對查詢的語句應為select*fromtest.tt.table1,也就是說,在sqlserver2000中一張表所屬的架構默認就是表的創建者的登錄名稱,用戶可以和修改他所創建的所有資料庫對象。

Ⅹ sqlserver 2012 伺服器角色怎麼選

1. 創建伺服器角色

[sql] view plain print?
-- 【創建伺服器角色】
CREATE SERVER ROLE TestServerRole --伺服器角色
AUTHORIZATION KK --所有者
GO

ALTER AUTHORIZATION ON SERVER ROLE::[TestServerRole] TO [PC\Administrator]--更改所有者為[PC\Administrator]
GO

2. 更改伺服器角色

[sql] view plain print?
-- 【更改伺服器角色】
-- 注: 以下MEMBER 可以是登錄名或用戶定義的伺服器角色。MEMBER 不能是固定伺服器角色、資料庫角色或 sa。

--即登錄賬號[kk]擁有伺服器角色[TestServerRole]許可權
ALTER SERVER ROLE [TestServerRole] ADD MEMBER [kk]
GO

--更名
ALTER SERVER ROLE [TestServerRole] WITH NAME = [NewTestServerRole]
GO

--即伺服器角色[TestServerRole]擁有伺服器角色[dbcreator]許可權
ALTER SERVER ROLE [dbcreator] ADD MEMBER [NewTestServerRole]
GO

可以看到伺服器角色名字變更了,同時角色成員用記錄有登錄賬號 「KK」

資料庫角色 NewTestServerRole 的伺服器角色成關系中 勾選上了 dbcreator ,即伺服器角色NewTestServerRole 也有了角色 dbcreator 的許可權!

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:593
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:888
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:581
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:765
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:684
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1012
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:255
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:113
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:806
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:712