日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

T-Sql(七)用戶權(quán)限操作(grant)

系統(tǒng) 2472 0
原文: T-Sql(七)用戶權(quán)限操作(grant)

一般數(shù)據(jù)庫(kù)的權(quán)限操作我們很少用,除非一些大型的項(xiàng)目,需要給數(shù)據(jù)庫(kù)配置不同的用戶及權(quán)限,防患于未然,今天我們就來(lái)了解下t-sql中配置用戶權(quán)限操作。

  先看示例代碼:

      
         1
      
      
        --
      
      
        創(chuàng)建登錄名
      
      
         2
      
      
        create
      
      
         login text1


      
      
         3
      
      
        with
      
       password
      
        =
      
      
        '
      
      
        password1
      
      
        '
      
      
        ,


      
      
         4
      
       check_policy 
      
        =
      
      
        off
      
      
        ;


      
      
         5
      
      
         6
      
      
        --
      
      
        修改登錄名
      
      
         7
      
      
        alter
      
      
         login text1


      
      
         8
      
      
        with
      
       name 
      
        =
      
      
         test1


      
      
         9
      
      
        go
      
      
        10
      
      
        alter
      
      
         login test1 disable


      
      
        11
      
      
        12
      
      
        --
      
      
        修改登錄名密碼
      
      
        13
      
      
        alter
      
      
         login test1


      
      
        14
      
      
        with
      
       password
      
        =
      
      
        '
      
      
        123456
      
      
        '
      
      
        15
      
       old_password
      
        =
      
      
        '
      
      
        password1
      
      
        '
      
      
        ;


      
      
        16
      
      
        17
      
      
        --
      
      
        刪除登錄名
      
      
        18
      
      
        drop
      
      
         login test1


      
      
        19
      
      
        --
      
      
        --------------
      
      
        20
      
      
        --
      
      
        創(chuàng)建用戶
      
      
        21
      
      
        use
      
      
         AdventureWorks


      
      
        22
      
      
        create
      
      
        user
      
      
         user1


      
      
        23
      
      
        for
      
      
         login text1


      
      
        24
      
      
        25
      
      
        --
      
      
        修改用戶
      
      
        26
      
      
        alter
      
      
        user
      
      
         user1


      
      
        27
      
      
        with
      
       name
      
        =
      
      
        use2;


      
      
        28
      
      
        29
      
      
        --
      
      
        刪除用戶
      
      
        30
      
      
        drop
      
      
        user
      
      
         user2


      
      
        31
      
      
        32
      
      
        --
      
      
        查看當(dāng)前數(shù)據(jù)庫(kù)對(duì)應(yīng)的用戶
      
      
        33
      
      
        select
      
      
        USER_NAME
      
      
        ()


      
      
        34
      
      
        SELECT
      
      
        CURRENT_USER
      
      
        AS
      
      
        '
      
      
        Current User Name
      
      
        '
      
      ;
    

這些語(yǔ)法都很簡(jiǎn)單我們主需要記住就行,當(dāng)然通過(guò)SQLSERVER的可視化界面也可以配置。

  下面我們也通過(guò)一個(gè)實(shí)例來(lái)理解和運(yùn)用配置用戶權(quán)限。

  實(shí)例要求:

    1.建立兩個(gè)用戶,user1,user2
    2.user1具有操作數(shù)據(jù)庫(kù)ExamMis的所有權(quán)限
    3.轉(zhuǎn)換上下文到USer1下,建立一個(gè)函數(shù):f_GetQuestionDetails,該函數(shù)返回題目?jī)?nèi)容(包括題干,分題項(xiàng),題型三個(gè)表的關(guān)聯(lián)內(nèi)容)
    4.賦權(quán)限給user2:讓其只具有執(zhí)行該函數(shù)的權(quán)限;
    5.轉(zhuǎn)換上下文到user2,執(zhí)行函數(shù)調(diào)用。

1, 建立兩個(gè)用戶,user1,user2

創(chuàng)建兩個(gè)登陸名,并在為登陸名創(chuàng)建user1和user2用戶。

  示例代碼:

      
         1
      
      
        create
      
      
         login TestUser1


      
      
         2
      
      
        with
      
       password
      
        =
      
      
        '
      
      
        password1
      
      
        '
      
      
        ;


      
      
         3
      
      
         4
      
      
        create
      
      
        user
      
      
         User1


      
      
         5
      
      
        for
      
      
         login TestUser1


      
      
         6
      
      
        with
      
       default_schema
      
        =
      
      
        dbo;


      
      
         7
      
      
         8
      
      
        create
      
      
         login TestUser2


      
      
         9
      
      
        with
      
       password
      
        =
      
      
        '
      
      
        password2
      
      
        '
      
      
        ;


      
      
        10
      
      
        11
      
      
        create
      
      
        user
      
      
         User2


      
      
        12
      
      
        for
      
       login TestUser2
    

2, user1具有操作數(shù)據(jù)庫(kù)ExamMis的所有權(quán)限

這個(gè)操作有三種方法:

    1,SQLSERVER可視化操作。

    2,grant all去給用戶分配權(quán)限。

    3,通過(guò)SQLSERVER系統(tǒng)自帶的存儲(chǔ)過(guò)程分配權(quán)限。

  這里我們先講一下grant的用法,grant是用來(lái)給用戶分配權(quán)限用的。

  我們先看一個(gè)示例代碼:

      
        1
      
      
        grant
      
      
        all
      
      
        2
      
      
        on
      
      
        database
      
      
        ::ExamMis


      
      
        3
      
      
        to
      
      
         User1


      
      
        4
      
      
        WITH
      
      
        GRANT
      
      
        OPTION
      
    

這段代碼的意思就是給 User1分配具有操作ExamMis數(shù)據(jù)庫(kù)的一切權(quán)限。all關(guān)鍵字的意思是所有權(quán)限,也可以指定某一權(quán)限,比如查詢權(quán)限就可以寫grant select,

  當(dāng)然 on 后面也可以是表,函數(shù),存儲(chǔ)過(guò)程,視圖等。

  示例代碼:

      
        1
      
      
        grant
      
      
        select
      
      ,
      
        insert
      
      ,
      
        update
      
      
        2
      
      
        on
      
      
        table
      
      
        ::student


      
      
        3
      
      
        to
      
      
         User1


      
      
        4
      
      
        WITH
      
      
        GRANT
      
      
        OPTION
      
    

?   這段代碼的意思是給用戶user1在student表分配具有查詢,插入,更新的權(quán)限,但是沒(méi)有刪除得權(quán)限。

通過(guò)SQLSERVER系統(tǒng)自帶的存儲(chǔ)過(guò)程分配權(quán)限,示例代碼:

      
        1
      
      
        EXEC
      
       sp_addrolemember N
      
        '
      
      
        db_owner
      
      
        '
      
      , N
      
        '
      
      
        User1
      
      
        '
      
    

?   sp_addrolemember是系統(tǒng)自帶的存儲(chǔ)過(guò)程, db_owner 的意思是所有者,可視化操作的時(shí)候我們也會(huì)看到。當(dāng)然還有一些其他的一些存儲(chǔ)過(guò)程,在文章的后面會(huì)給大家整理出來(lái)。

3, 轉(zhuǎn)換上下文到User1下,建立一個(gè)函數(shù):f_GetQuestionDetails

執(zhí)行上下面到User1下:

      
        1
      
      
        EXECUTE
      
      
        AS
      
       LOGIN 
      
        =
      
      
        '
      
      
        TestUser1
      
      
        '
      
    

我們可以通過(guò)select USER_NAME(); 來(lái)查看當(dāng)前用戶名。

  下面我們創(chuàng)建函數(shù): f_GetQuestionDetails ,函數(shù)具有返回值,返回table。

  示例代碼:

      
        1
      
      
        create
      
      
        function
      
      
         Select_Questions()


      
      
        2
      
      
        returns
      
      
        table
      
      
        3
      
      
        as
      
      
        4
      
      
        return
      
      
        5
      
      
        (


      
      
        6
      
      
        select
      
       t1.
      
        *
      
      ,t2.TypeName,t2.Score,t3.SelectionNo,t3.SelectionTitle,t3.IsAnswer 
      
        from
      
      
         dbo.Questions t1


      
      
        7
      
      
        inner
      
      
        join
      
       dbo.QuestionType t2 
      
        on
      
       t1.TypeNo
      
        =
      
      t2.
      
        [
      
      
        no
      
      
        ]
      
      
        8
      
      
        inner
      
      
        join
      
       dbo.QuestionSelections t3 
      
        on
      
       t1.
      
        [
      
      
        no
      
      
        ]
      
      
        =
      
      
        t3.QuestionNo


      
      
        9
      
       ); 
    

  函數(shù)的用法很簡(jiǎn)單,就不單列去講解了,和我們編程時(shí)候用的方法類似,只是語(yǔ)法不同而已,大家熟悉用就行。

4,函數(shù) 賦權(quán)限給user2:讓其只具有執(zhí)行該函數(shù)的權(quán)限;

這一步我們可以直接用上面提到的grant去給用戶user2分配權(quán)限。

  這里我們就多做一部,創(chuàng)建一個(gè)角色,然這個(gè)角色具有操作這個(gè)函數(shù)的權(quán)限,然后把角色分配給用戶user2。

  一般我們項(xiàng)目的權(quán)限管理都是這個(gè)設(shè)計(jì):用戶->角色->權(quán)限。

  示例代碼:

      
        1
      
      
        create
      
       role Select_Fuction  
      
        --
      
      
        創(chuàng)建角色
      
      
        2
      
      
        3
      
      
        GRANT
      
      
        select
      
      
        4
      
      
        ON
      
      
         OBJECT::dbo.Select_Questions


      
      
        5
      
      
        TO
      
      
         Select_Fuction;


      
      
        6
      
      
        7
      
      
        exec
      
       sp_addrolemember 
      
        '
      
      
        Select_Fuction
      
      
        '
      
      ,
      
        '
      
      
        User2
      
      
        '
      
      
        --
      
      
        將Select_Fuction角色添加到User2用戶中
      
    

5.轉(zhuǎn)換上下文到user2,執(zhí)行函數(shù)調(diào)用。

  示例代碼:

      
        1
      
      
        REVERT;


      
      
        2
      
      
        EXECUTE
      
      
        AS
      
       LOGIN 
      
        =
      
      
        '
      
      
        TestUser2
      
      
        '
      
      
        3
      
      
        select
      
      
        USER_NAME
      
      
        ()


      
      
        4
      
      
        5
      
      
        select
      
      
        *
      
      
        from
      
       Select_Questions()
    

REVERT;的意思是切換上下文。

 ? 執(zhí)行完操作我們把登陸名,用戶名刪掉:

      
        1
      
      
        drop
      
      
        function
      
      
         Select_Questions


      
      
        2
      
      
        drop
      
      
         login TestUser1


      
      
        3
      
      
        drop
      
      
         login TestUser2


      
      
        4
      
      
        drop
      
      
        user
      
      
         user1


      
      
        5
      
      
        drop
      
      
        user
      
       user2
    

? 用戶權(quán)限配置系統(tǒng)存儲(chǔ)過(guò)程

      
         1
      
      
        sp_addlogin 登錄名,登陸密碼,默認(rèn)數(shù)據(jù)庫(kù),默認(rèn)語(yǔ)言,安全碼,是否加密


      
      
         2
      
      
        sp_password 舊密碼,新密碼,指定登錄號(hào)


      
      
         3
      
      
        sp_defaultdb 指定登錄號(hào),默認(rèn)數(shù)據(jù)庫(kù)


      
      
         4
      
      
        sp_defaultlanguage 指定登錄號(hào),默認(rèn)語(yǔ)言


      
      
         5
      
      
        sp_helplogins 指定登錄號(hào)


      
      
         6
      
      
        sp_droplogin 指定登錄號(hào)


      
      
         7
      
      
         8
      
      
        --
      
      
        -----------------------數(shù)據(jù)庫(kù)用戶管理---
      
      
         9
      
      
        sp_grantdbaccess 登錄號(hào),數(shù)據(jù)庫(kù)用戶名


      
      
        10
      
      
        sp_helpuser 數(shù)據(jù)庫(kù)用戶名


      
      
        11
      
      
        sp_revokedbaccess 指定數(shù)據(jù)庫(kù)用戶名


      
      
        12
      
      
        13
      
      
        --
      
      
        ----------------------服務(wù)器角色--------
      
      
        14
      
      
        sp_addsrvrolermemeber 登陸賬號(hào)名,服務(wù)器角色名


      
      
        15
      
      
        sp_dropsrvrolermember 登陸用戶名,服務(wù)器角色名


      
      
        16
      
      
        17
      
      
        --
      
      
        ----------------------數(shù)據(jù)庫(kù)角色---------
      
      
        18
      
      
        19
      
      
        sp_addrole 數(shù)據(jù)庫(kù)角色名,數(shù)據(jù)庫(kù)角色的所有者


      
      
        20
      
      
        sp_droprole 數(shù)據(jù)庫(kù)角色名


      
      
        21
      
      
        22
      
      
        --
      
      
        ----------創(chuàng)建數(shù)據(jù)庫(kù)角色的成員----
      
      
        23
      
      
        24
      
      
        sp_addrolemember 數(shù)據(jù)庫(kù)角色名,數(shù)據(jù)庫(kù)用戶


      
      
        25
      
       sp_droprolemember 數(shù)據(jù)庫(kù)角色名,數(shù)據(jù)庫(kù)用戶
    

  t-sql中的用戶權(quán)限配置就講到這,這一部分的內(nèi)容我們很少去涉及,但是還是了解一些,說(shuō)不準(zhǔn)哪天DB不在,經(jīng)理讓你去配數(shù)據(jù)庫(kù)用戶呢,編程的都不會(huì),就你會(huì),自己是不是很有面子啊。哈哈。

  以后繼續(xù)整理一下編程相關(guān)的知識(shí),請(qǐng)大家多多關(guān)注。。。

T-Sql(七)用戶權(quán)限操作(grant)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦?。。?/p>

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 沿河| 昌图县| 会昌县| 东台市| 阳谷县| 新郑市| 满洲里市| 安康市| 怀仁县| 长春市| 岱山县| 马尔康县| 黑水县| 泸定县| 临泉县| 务川| 黑龙江省| 屯昌县| 昭苏县| 龙海市| 襄汾县| 洞头县| 荔波县| 五河县| 同江市| 石河子市| 曲沃县| 蕲春县| 环江| 金华市| 英山县| 南平市| 邓州市| 井研县| 南漳县| 镇赉县| 临桂县| 江永县| 吉安市| 甘孜县| 新营市|