很多時(shí)候,我們?cè)跍y(cè)試網(wǎng)頁(yè)時(shí)或初學(xué)數(shù)據(jù)庫(kù)應(yīng)用,登陸SQL Server數(shù)據(jù)庫(kù)時(shí)會(huì)使用系統(tǒng)默認(rèn)的系統(tǒng)用戶(hù)sa。要知道sa用戶(hù)可是一個(gè)超級(jí)用戶(hù)ID,如果我們的網(wǎng)站是簡(jiǎn)單的或者說(shuō)可以不用考慮安全性的企業(yè)站、個(gè)人站還好,數(shù)據(jù)破壞了,我重新做一份就得了嘛,反正數(shù)據(jù)少。不過(guò)如果對(duì)于系統(tǒng)安全性要求相對(duì)較高的系統(tǒng)、網(wǎng)站,使用sa用戶(hù),那后果……
怎么通過(guò)控制數(shù)據(jù)庫(kù)登錄用戶(hù)的ID來(lái)控制登錄用戶(hù)的權(quán)限呢?
首先,用sa用戶(hù)登陸SQL Server 2005數(shù)據(jù)庫(kù),選擇安全性-->登錄名-->右鍵新建登錄名,自定義一個(gè)自己用于登陸系統(tǒng)的用戶(hù)名,如99Space,選擇SQL Server身份驗(yàn)證鍵入登錄密碼。
其次,好,接下來(lái)是關(guān)鍵了——服務(wù)器角色。定義了服務(wù)器角色,你定義的登陸用戶(hù)就有了相應(yīng)的執(zhí)行權(quán)限,先來(lái)看一下這些角色都是些什么意思:
服務(wù)器角色
含義
Bulkadmin
可以運(yùn)行 BULK INSERT 語(yǔ)句
Dbcreator
創(chuàng)建、更改、刪除和還原任何數(shù)據(jù)庫(kù)
Diskadmin
管理磁盤(pán)文件
Processadmin
可以終止在數(shù)據(jù)庫(kù)引擎 實(shí)例中運(yùn)行的進(jìn)程
Securityadmin
可以管理登錄名及其屬性。具有 GRANT、DENY 和 REVOKE 服務(wù)器和數(shù)據(jù)庫(kù)級(jí)別的權(quán)限。此外,還可以重置 SQL Server 登錄名的密碼
Serveradmin
可以更改服務(wù)器范圍的配置選項(xiàng)和關(guān)閉服務(wù)器
Setupadmin
可以添加和刪除鏈接服務(wù)器,并可以執(zhí)行某些系統(tǒng)存儲(chǔ)過(guò)程(如 sp_serveroption)
Sysadmin
在SQL Server中進(jìn)行任何活動(dòng)。該角色的權(quán)限跨越所有其他固定服務(wù)器角色。默認(rèn)情況下,Windows BUILTIN\Administrators 組(本地管理員組)的所有成員都是 sysadmin 固定服務(wù)器角色的成員
相信看了這個(gè)表,你應(yīng)該知道如何為自己定義的用戶(hù)選定相應(yīng)的執(zhí)行權(quán)限了吧?我指選擇了Dbcreator這一項(xiàng)。
三、定義完成服務(wù)器角色之后,如果只想使得該用戶(hù)只具有某些數(shù)據(jù)庫(kù)的管理權(quán)限,那就——進(jìn)入用戶(hù)映射,選擇右邊框中相應(yīng)的數(shù)據(jù)庫(kù)吧。下邊是相應(yīng)選項(xiàng)的含義,按照需要選擇:
固定數(shù)據(jù)庫(kù)角色數(shù)據(jù)庫(kù)級(jí)權(quán)限服務(wù)器級(jí)權(quán)限
db_accessadmin
已授予:ALTER ANY USER、CREATE SCHEMA
已授予:VIEW ANY DATABASE
db_accessadmin
已使用 GRANT 選項(xiàng)授予:CONNECT
db_backupoperator
已授予:BACKUP DATABASE、BACKUP LOG、CHECKPOINT
已授予:VIEW ANY DATABASE
db_datareader
已授予:SELECT
已授予:VIEW ANY DATABASE
db_datawriter
已授予:DELETE、INSERT、UPDATE
已授予:VIEW ANY DATABASE
db_ddladmin
已授予:ALTER ANY ASSEMBLY、ALTER ANY ASYMMETRIC KEY、ALTER ANY CERTIFICATE、ALTER ANY CONTRACT、ALTER ANY DATABASE DDL TRIGGER、ALTER ANY DATABASE EVENT、NOTIFICATION、ALTER ANY DATASPACE、ALTER ANY FULLTEXT CATALOG、ALTER ANY MESSAGE TYPE、ALTER ANY REMOTE SERVICE BINDING、ALTER ANY ROUTE、ALTER ANY SCHEMA、ALTER ANY SERVICE、ALTER ANY SYMMETRIC KEY、CHECKPOINT、CREATE AGGREGATE、CREATE DEFAULT、CREATE FUNCTION、CREATE PROCEDURE、CREATE QUEUE、CREATE RULE、CREATE SYNONYM、CREATE TABLE、CREATE TYPE、CREATE VIEW、CREATE XML SCHEMA COLLECTION、REFERENCES
已授予:VIEW ANY DATABASE
db_denydatareader
已拒絕:SELECT
已授予:VIEW ANY DATABASE
db_denydatawriter
已拒絕:DELETE、INSERT、UPDATE
db_owner
已使用 GRANT 選項(xiàng)授予:CONTROL
已授予:VIEW ANY DATABASE
db_securityadmin
已授予:ALTER ANY APPLICATION ROLE、ALTER ANY ROLE、CREATE SCHEMA、VIEW DEFINITION
已授予:VIEW ANY DATABASE
上面這個(gè)表式微軟官方的,來(lái)個(gè)簡(jiǎn)單點(diǎn)的吧:
固定數(shù)據(jù)庫(kù)角色
說(shuō) 明
db_owner
可以執(zhí)行數(shù)據(jù)庫(kù)中技術(shù)所有動(dòng)作的用戶(hù)
db_accessadmin
可以添加、刪除用戶(hù)的用戶(hù)
db_datareader
可以查看所有數(shù)據(jù)庫(kù)中用戶(hù)表內(nèi)數(shù)據(jù)的用戶(hù)
db_datawriter
可以添加、修改或刪除所有數(shù)據(jù)庫(kù)中用戶(hù)表內(nèi)數(shù)據(jù)的用戶(hù)
db_ddladmin
可以在數(shù)據(jù)庫(kù)中執(zhí)行所有DDL操作的用戶(hù)
db_securityadmin
可以管理數(shù)據(jù)庫(kù)中與安全權(quán)限有關(guān)所有動(dòng)作的用戶(hù)
db_backoperator
可以備份數(shù)據(jù)庫(kù)的用戶(hù)(并可以發(fā)布DBCC和CHECKPOINT語(yǔ)句,這兩個(gè)語(yǔ)句一般在備份前都會(huì)被執(zhí)行)
db_denydatareader
不能看到數(shù)據(jù)庫(kù)中任何數(shù)據(jù)的用戶(hù)
db_denydatawriter
不能改變數(shù)據(jù)庫(kù)中任何數(shù)據(jù)的用戶(hù)
OK,點(diǎn)擊確定,退出SQL Server2005,重新用新建的數(shù)據(jù)庫(kù)用戶(hù)登陸數(shù)據(jù)庫(kù),看看你當(dāng)前能干什么?只能對(duì)你選定的數(shù)據(jù)庫(kù)進(jìn)行操作而已。呃,出現(xiàn)錯(cuò)誤的話(huà),慢慢調(diào)試!