1. 首先在 SQL Server 服務器級別,創建登陸帳戶(create login)
create login system_dbowner with password='usercode1', default_database=訂單數據庫
登陸帳戶名為:“system_dbowner”,登陸密碼:"usercode1”,默認連接到的數據庫:“訂單數據庫”。
默認連接到的數據庫:“訂單數據庫”。 這時候,system_dbowner 帳戶就可以連接到 SQL Server 服務器上了。但是此時還不能 訪問數據庫中的對象(嚴格的說,此時system_dbowner 帳戶默認是 guest 數據庫用戶身份, 可以訪問 guest 能夠訪問的數據庫對象)。要使 system_dbowner 帳戶能夠在 “訂單數據庫”中訪問自己需要的對象, 需要在數據庫 “訂單數據庫” 中建立一個“數據庫用戶”,賦予這個“數據庫用戶” 某些訪問權限,並且把登陸帳戶“system_dbowner” 和這個“數據庫用戶” 映射起來。 習慣上,“數據庫用戶” 的名字和 “登陸帳戶”的名字相同,即:“system_dbowner”。 創建“數據庫用戶”和建立映射關系只需要一步即可完成。
2. 創建數據庫用戶(create user):
create user system_dbowner for login system_dbowner with default_schema=dbo
並指定數據庫用戶“system_dbowner” 的默認 schema 是“訂單數據庫”。
這意味着 用戶“system_dbowner” 在執行“select * from t”,實際上執行的是 “select * from 訂單數據庫.t”。
3. 通過加入數據庫角色,賦予數據庫用戶“dba”權限:
exec sp_addrolemember 'db_owner', 'system_dbowner'
此時,system_dbowner就可以全權管理數據庫“訂單數據庫” 中的對象了。
如果想讓 SQL Server 登陸帳戶“system_dbowner”訪問多個數據庫,比如 mydb2。 可以讓 sa 執行下面的語句:
--讓 SQL Server 登陸帳戶“dba”訪問多個數據庫
use mydb2 go create user system_dbowner for login system_dbowner with default_schema=dbo go exec sp_addrolemember 'db_owner', 'system_dbowner' go
此時,dba 就可以有兩個數據庫 mydb, mydb2 的管理權限了!
4.授權
(1)授予大權限,除select等(system_daowner是角色)
grant all to system_dbowner;
(2)授予對整個數據庫的查詢、插入、刪除、更新權限(此時不含有on關鍵字)
grant select,update,insert,delete to system_dbowner
(3)授予對數據庫中的某些表格的查詢、插入、刪除、更新權限(此時含有on關鍵字)
grant select,update,insert,delete on 訂單 to system_dbowner
(4)回收權限
revoke all to system_dbowner revoke select,update,insert,delete to system_dbowner
(5)刪除角色
drop user system_dbowner
(6)刪除登錄名
drop login system_dbowner