要想成功訪問 SQL Server 數(shù)據(jù)庫中的數(shù)據(jù),
我們需要兩個方面的授權(quán):一、獲得準許連接 SQL Server 服務(wù)器的權(quán)利;
二、獲得訪問特定數(shù)據(jù)庫中數(shù)據(jù)的權(quán)利(select, update, delete, create table ...)。
假設(shè),我們準備建立一個 dba 數(shù)據(jù)庫帳戶,用來管理數(shù)據(jù)庫 mydb。
1. 首先在 SQL Server 服務(wù)器級別,創(chuàng)建登陸帳戶(create login)
create login dba with password='sqlstudy', default_database=mydb
登陸帳戶名為:“dba”,登陸密碼:“sqlstudy”,默認連接到的數(shù)據(jù)庫:“mydb”。
這時候,dba 帳戶就可以連接到 SQL Server 服務(wù)器上了。但是此時還不能
訪問數(shù)據(jù)庫中的對象(嚴格的說,此時 dba 帳戶默認是 guest 數(shù)據(jù)庫用戶身份,
可以訪問 guest 能夠訪問的數(shù)據(jù)庫對象)。
要使 dba 帳戶能夠在 mydb 數(shù)據(jù)庫中訪問自己需要的對象,
需要在數(shù)據(jù)庫 mydb 中建立一個“數(shù)據(jù)庫用戶”,賦予這個“數(shù)據(jù)庫用戶”
某些訪問權(quán)限,并且把登陸帳戶“dba” 和這個“數(shù)據(jù)庫用戶” 映射起來。
習慣上,“數(shù)據(jù)庫用戶” 的名字和 “登陸帳戶”的名字相同,即:“dba”。
創(chuàng)建“數(shù)據(jù)庫用戶”和建立映射關(guān)系只需要一步即可完成:
2. 創(chuàng)建數(shù)據(jù)庫用戶(create user):
create user dba for login dba with default_schema=dbo
并指定數(shù)據(jù)庫用戶“dba” 的默認 schema 是“dbo”。這意味著
用戶“dba” 在執(zhí)行“select * from t”,實際上執(zhí)行的是
“select * from dbo.t”。
3. 通過加入數(shù)據(jù)庫角色,賦予數(shù)據(jù)庫用戶“dba”權(quán)限:
exec sp_addrolemember 'db_owner', 'dba'
此時,dba 就可以全權(quán)管理數(shù)據(jù)庫 mydb 中的對象了。
如果想讓 SQL Server 登陸帳戶“dba”訪問多個數(shù)據(jù)庫,比如 mydb2。
可以讓 sa 執(zhí)行下面的語句:
use mydb2
go
create user dba for login dba with default_schema=dbo
go
exec sp_addrolemember 'db_owner', 'dba'
go
此時,dba 就可以有兩個數(shù)據(jù)庫 mydb, mydb2 的管理權(quán)限了!
4. 禁用、啟用登陸帳戶:
alter login dba disable
alter login dba enable
5. 登陸帳戶改名:
alter login dba with name=dba_tom
提示:在 SQL Server 2005 中也可以給 sa 改名。
《SQL Server 2005 安全性增強:給超級用戶 sa 改名》
6. 登陸帳戶改密碼:
alter login dba with password='sqlstudy.com'
7. 數(shù)據(jù)庫用戶改名:
alter user dba with name=dba_tom
8. 更改數(shù)據(jù)庫用戶 defult_schema:
alter user dba with default_schema=sales
9. 刪除數(shù)據(jù)庫用戶:
drop user dba
10. 刪除 SQL Server登陸帳戶:
drop login dba