在SQL Server中創建用戶角色及授權(使用SQL語句)


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 登陸帳戶“dba”訪問多個數據庫,比如 mydb2。 可以讓 sa 執行下面的語句:

--讓 SQL Server 登陸帳戶“dba”訪問多個數據庫

use mydb2
go create user dba for login dba with default_schema=dbo
go exec sp_addrolemember 'db_owner', 'dba' go

此時,dba 就可以有兩個數據庫 mydb, mydb2 的管理權限了!
完整的代碼示例:

--創建數據庫mydb和mydb2
 
--在mydb和mydb2中創建測試表,默認是dbo這個schema
 
CREATE TABLE DEPT
       (DEPTNO int primary key,
        DNAME VARCHAR(14),
        LOC VARCHAR(13) );
 
--插入數據
 
INSERT INTO DEPT VALUES (101, 'ACCOUNTING', 'NEW YORK');
INSERT INTO DEPT VALUES (201, 'RESEARCH',   'DALLAS');
INSERT INTO DEPT VALUES (301, 'SALES',      'CHICAGO');
INSERT INTO DEPT VALUES (401, 'OPERATIONS', 'BOSTON');
 
--查看數據庫schema, user 的存儲過程
 
select * from sys.database_principals
select * from sys.schemas
select * from sys.server_principals
 
--創建登陸帳戶(create login)
 
create login dba with password='abcd1234@', default_database=mydb
 
--為登陸賬戶創建數據庫用戶(create user),在mydb數據庫中的security中的user下可以找到新創建的dba
 
create user dba for login dba with default_schema=dbo
 
--通過加入數據庫角色,賦予數據庫用戶“db_owner”權限
 
exec sp_addrolemember 'db_owner', 'dba'
 
 
--讓 SQL Server 登陸帳戶“dba”訪問多個數據庫
 
use mydb2
go create user dba for login dba with default_schema=dbo
go exec sp_addrolemember 'db_owner', 'dba'go
 
 
--禁用登陸帳戶
 
alter login dba disable
--啟用登陸帳戶
 
alter login dba enable
--登陸帳戶改名
 
alter login dba with name=dba_tom
--登陸帳戶改密碼:
 
alter login dba with password='aabb@ccdd'
 
--數據庫用戶改名:
 
alter user dba with name=dba_tom
--更改數據庫用戶 defult_schema:
 
alter user dba with default_schema=sales
--刪除數據庫用戶:
 
drop user dba
--刪除 SQL Server登陸帳戶:
 
drop login dba

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM