亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

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

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

一般數(shù)據(jù)庫的權(quán)限操作我們很少用,除非一些大型的項(xiàng)目,需要給數(shù)據(jù)庫配置不同的用戶及權(quán)限,防患于未然,今天我們就來了解下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ù)庫對(duì)應(yīng)的用戶
      
      
        33
      
      
        select
      
      
        USER_NAME
      
      
        ()


      
      
        34
      
      
        SELECT
      
      
        CURRENT_USER
      
      
        AS
      
      
        '
      
      
        Current User Name
      
      
        '
      
      ;
    

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

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

  實(shí)例要求:

    1.建立兩個(gè)用戶,user1,user2
    2.user1具有操作數(shù)據(jù)庫ExamMis的所有權(quán)限
    3.轉(zhuǎn)換上下文到USer1下,建立一個(gè)函數(shù):f_GetQuestionDetails,該函數(shù)返回題目內(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ù)庫ExamMis的所有權(quán)限

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

    1,SQLSERVER可視化操作。

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

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

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

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

      
        1
      
      
        grant
      
      
        all
      
      
        2
      
      
        on
      
      
        database
      
      
        ::ExamMis


      
      
        3
      
      
        to
      
      
         User1


      
      
        4
      
      
        WITH
      
      
        GRANT
      
      
        OPTION
      
    

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

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

  示例代碼:

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


      
      
        3
      
      
        to
      
      
         User1


      
      
        4
      
      
        WITH
      
      
        GRANT
      
      
        OPTION
      
    

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

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

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

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

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

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

      
        1
      
      
        EXECUTE
      
      
        AS
      
       LOGIN 
      
        =
      
      
        '
      
      
        TestUser1
      
      
        '
      
    

我們可以通過select USER_NAME(); 來查看當(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ù)的用法很簡單,就不單列去講解了,和我們編程時(shí)候用的方法類似,只是語法不同而已,大家熟悉用就行。

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ǔ)過程

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


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


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


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


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


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


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


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


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


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


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


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


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


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


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

  t-sql中的用戶權(quán)限配置就講到這,這一部分的內(nèi)容我們很少去涉及,但是還是了解一些,說不準(zhǔn)哪天DB不在,經(jīng)理讓你去配數(shù)據(jù)庫用戶呢,編程的都不會(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)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

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

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

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 一级一级18女人毛片 | 免费的拍拍视频在线观看 | 精品免费久久久久国产一区 | 欧美日韩视频在线第一区 | 香蕉爱视频 | 午夜大片免费男女爽爽影院久久 | 九九综合 | 99久久精品免费看国产交换 | 99re6这里只有精品视频 | 日韩日日操 | a一级黄 | 欧美综合区 | 99热这里只有成人精品国产 | 玖玖国产| 亚洲成在人线影视天堂网 | 国产成年网站v片在线观看 国产成人 免费观看 | 玖玖精品在线 | 亚洲黄色在线观看视频 | 色综合久久久高清综合久久久 | 四虎永久免费在线观看 | 女人18级毛片久久 | 全部费免一级毛片不收费 | 你懂的国产精品 | 看免费5xxaaa毛片30厘米 | 精品自拍视频在线观看 | 国产乱仑| 欧美色婷婷 | 全部无卡免费的毛片在线看 | 欧美jizzhd精品欧美另类 | 99久久爱re热6在播放 | 高清国产一区 | 自拍偷拍一区 | 全部免费的毛片在线看青青 | 高清视频一区二区 | 国产91系列 | 99精品视频在线视频免费观看 | 99网| 久久成年人视频 | 欧洲a视频| 夜夜爽天天狠狠九月婷婷 | 成人啪啪免费看 |