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