簡體   English   中英

登錄用戶的sql權限,以進一步創建登錄名和應用程序角色

[英]sql permissions to a login user to further create logins and application roles

我正在使用SQL Server Express 2005。

我只有一個數據庫可以使用&創建登錄名,用戶並僅授予對此數據庫的權限。

我創建了一個數據庫shopDB。

然后登錄shopDBLogin。

然后,我選擇shopDB並為shopDBLogin創建了一個用戶shopDBUser。 代碼是:

create database shopDB

use shopDB
create login shopDBLogin with password='_'  , default_database = shopDB

use shopDB
create user shopDBUser for login shopDBLogin 

現在,我想授予shopDBUser權限以執行以下任務:

-在這些登錄名中創建3個新登錄名L1,L2,L3和3個新用戶U1,U2,U3

-授予對U2,U3的權限以僅插入sql數據庫

-創建3個應用程序角色

如何向用戶授予這些任務的權限? 請幫忙。

我必須使用db_securityadmin

使用sp_addrolemember分發角色。

例:

EXEC sp_addrolemember 'db_securityadmin', 'shopDBUser'

如果您只希望shopDBUser能夠將“子用戶”變成他自己的用戶:您不能使用角色來做到這一點。 我建議創建一個執行此操作的存儲過程,向存儲過程授予提升的權限,然后向shopDBUser授予執行該存儲過程的權限。

當然,您必須自己在stp中進行必要的檢查。 主要是因為我認為SQL中根本不了解子用戶的概念。

編輯:也許將子用戶的概念實現為單獨的表UserInfo。 請參見以下示例:

CREATE PROCEDURE [dbo].[stp_CreateSubUser]
(
    @SubUser nvarchar(200),
    @Pass nvarchar(200)
)
AS
BEGIN
    EXEC('create login ' + @SubUser + ' with password=''' + @Pass + ''', default_database = shopDB')
    EXECUTE AS OWNER
    EXEC('create user ' + @SubUser + ' for login ' + @SubUser )
    EXECUTE AS OWNER
    EXEC sp_addrolemember 'db_datareader', @SubUser
    EXECUTE AS OWNER
    EXEC sp_addrolemember 'db_datawriter', @SubUser
    EXECUTE AS OWNER

    INSERT [dbo].[UserInfo]
    ([UserName],[ParentUserName])
    VALUES
    (@SubUser, USER)
END

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM