<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    yxhxj2006

    常用鏈接

    統計

    最新評論

    sql server中利用sql語句如何創建角色和用戶

    /*--示例說明
            示例在數據庫pubs中創建一個擁有表jobs的所有權限、擁有表titles的SELECT權限的角色r_test
        隨后創建了一個登錄l_test,然后在數據庫pubs中為登錄l_test創建了用戶賬戶u_test
        同時將用戶賬戶u_test添加到角色r_test中,使其通過權限繼承獲取了與角色r_test一樣的權限
        最后使用DENY語句拒絕了用戶賬戶u_test對表titles的SELECT權限。
        經過這樣的處理,使用l_test登錄SQL Server實例后,它只具有表jobs的所有權限。
    --
    */

    USE pubs

    --創建角色 r_test
    EXEC sp_addrole 'r_test'

    --授予 r_test 對 jobs 表的所有權限
    GRANT ALL ON jobs TO r_test
    --授予角色 r_test 對 titles 表的 SELECT 權限
    GRANT SELECT ON titles TO r_test

    --添加登錄 l_test,設置密碼為pwd,默認數據庫為pubs
    EXEC sp_addlogin 'l_test','pwd','pubs'

    --為登錄 l_test 在數據庫 pubs 中添加安全賬戶 u_test
    EXEC sp_grantdbaccess 'l_test','u_test'

    --添加 u_test 為角色 r_test 的成員
    EXEC sp_addrolemember 'r_test','u_test'

    --拒絕安全賬戶 u_test 對 titles 表的 SELECT 權限
    DENY SELECT ON titles TO u_test

    /*--完成上述步驟后,用 l_test 登錄,可以對jobs表進行所有操作,但無法對titles表查詢,雖然角色 r_test 有titles表的select權限,但已經在安全賬戶中明確拒絕了對titles的select權限,所以l_test無titles表的select權限--*/

    --從數據庫 pubs 中刪除安全賬戶
    EXEC sp_revokedbaccess 'u_test'

    --刪除登錄 l_test
    EXEC sp_droplogin 'l_test'

    --刪除角色 r_test
    EXEC sp_droprole 'r_test'
    SQL code
    --1. 創建示例環境。 首先使用下面的代碼創建一個登錄l_test,并且為登錄在數據庫pubs中創建關聯的用戶賬戶u_test,并且授予用戶賬戶u_test對表titles的SELECT權限,用以實現登錄l_test連接到SQL Server實例后,可以訪問表titles。然后創建了一個應用程序角色r_p_test,授予該角色對表jobs的SELECT權限,用以實現激活r_p_test時,允許訪問特定的表jobs。 USE pubs --創建一個登錄 l_test, 密碼 pwd, 默認數據庫 pubs EXEC sp_addlogin 'l_test','pwd','pubs' --為登錄 l_test 在數據庫 pubs 中添加安全賬戶 u_test EXEC sp_grantdbaccess 'l_test','u_test' --授予安全賬戶 u_test 對 titles 表的 SELECT 權限 GRANT SELECT ON titles TO u_test --創建一個應用程序角色 r_p_test, 密碼 abc EXEC sp_addapprole 'r_p_test','abc' --授予角色 r_p_test 對 jobs 表的 SELECT 權限 GRANT SELECT ON jobs TO r_p_test GO --2. 激活應用程序角色。 /*--激活說明 示例環境創建完成后,在任何地方(比如查詢分析器、應用程序) 使用登錄l_test連接SQL Server實例,均只能訪問表titles,或者是guest用戶 和public角色允許訪問的對象。 如果要在某些特定的應用程序中,允許登錄訪問表jobs,那么, 可以激活應用程序角色r_p_test,激活應用程序角色后,登錄本身的權限會消失。 下面在查詢分析器中登錄,演示激活應用程序角色r_p_test前后對數據訪問的區別。 --*/ --激活應用程序角色 r_p_test 前,登錄具有表 titles 的訪問權,但無表 jobs 的訪問權 SELECT titles_count=COUNT(*) FROM titles SELECT jobs_count=COUNT(*) FROM jobs /*--結果: titles_count ------------ 18 (所影響的行數為 1 行) 服務器: 消息 229,級別 14,狀態 5,行 2 拒絕了對對象 'jobs'(數據庫 'pubs',所有者 'dbo')的 SELECT 權限。 --*/ GO --用密碼 abc 激活 r_p_test 應用程序角色,并且在將此密碼發送到SQL Server之前對其加密 EXEC sp_setapprole 'r_p_test',{Encrypt N'abc'},'ODBC' GO --激活應用程序角色 r_p_test 后,登錄失去表 titles 的訪問權,獲取表 jobs 的訪問權 SELECT titles_count=COUNT(*) FROM titles SELECT jobs_count=COUNT(*) FROM jobs /*--結果 服務器: 消息 229,級別 14,狀態 5,行 2 拒絕了對對象 'titles'(數據庫 'pubs',所有者 'dbo')的 SELECT 權限。 jobs_count ----------- 14 (所影響的行數為 1 行) --*/
    SQL code
    exec sp_dropsrvrolemember N'aa', sysadmin go exec sp_addsrvrolemember N'aa', securityadmin go --作好SQL的安全管理 --作者:鄒建 首先,做好用戶安全: --簡單的,只允許sql的用戶訪問sql(防止利用administrator組用戶訪問) 1.企業管理器--右鍵SQL實例--屬性--安全性--身份驗證--選擇"sql server和windows"--確定 2.企業管理器--安全性--登陸--右鍵sa--設置密碼--其他用戶也設置密碼 3.刪除用戶: BUILTIN\Administrators <機器名>\Administrator --這個用戶不一定有 這樣可以防止用windows身份登陸SQL 4.設置進入企業管理器需要輸入密碼 在企業管理器中 --右鍵你的服務器實例(就是那個有綠色圖標的) --編輯SQL Server注冊屬性 --選擇"使用 SQL Server 身份驗證" --并勾選"總是提示輸入登錄名和密碼" --確定 --經過上面的設置,你的SQL Server基本上算是安全了. ------------------------------------------------------------------------ 其次,改默認端口,隱藏服務器,減少被攻擊的可能性 SQL Server服務器 --開始 --程序 --Microsoft SQL Server --服務器網絡實用工具 --啟用的協議中"TCP/IP" --屬性 --默認端口,輸入一個自已定義的端口,比如2433 --勾選隱藏服務器 ---------------------------------------------------------------------------- --管好sql的用戶,防止訪問他不該訪問的數據庫(總控制,明細還可以控制他對于某個數據庫的具體對象具有的權限) --切換到你新增的用戶要控制的數據庫 use 你的庫名 go --新增用戶 exec sp_addlogin 'test' --添加登錄 exec sp_grantdbaccess N'test' --使其成為當前數據庫的合法用戶 exec sp_addrolemember N'db_owner', N'test' --授予對自己數據庫的所有權限 --這樣創建的用戶就只能訪問自己的數據庫,及數據庫中包含了guest用戶的公共表 go --刪除測試用戶 exec sp_revokedbaccess N'test' --移除對數據庫的訪問權限 exec sp_droplogin N'test' --刪除登錄 如果在企業管理器中創建的話,就用: 企業管理器--安全性--右鍵登錄--新建登錄 常規項 --名稱中輸入用戶名 --身份驗證方式根據你的需要選擇(如果是使用windows身份驗證,則要先在操作系統的用戶中新建用戶) --默認設置中,選擇你新建的用戶要訪問的數據庫名 服務器角色項 這個里面不要選擇任何東西 數據庫訪問項 勾選你創建的用戶需要訪問的數據庫名 數據庫角色中允許,勾選"public","db_ownew" 確定,這樣建好的用戶與上面語句建立的用戶一樣 --------------------------------------------------------------------------- 最后一步,為具體的用戶設置具體的訪問權限,這個可以參考下面的最簡示例: --添加只允許訪問指定表的用戶: exec sp_addlogin '用戶名','密碼','默認數據庫名' --添加到數據庫 exec sp_grantdbaccess '用戶名' --分配整表權限 GRANT SELECT , INSERT , UPDATE , DELETE ON table1 TO [用戶名] --分配權限到具體的列 GRANT SELECT , UPDATE ON table1(id,AA) TO [用戶名] ------------------------------------------------------------------- 至于具體的安全設置和理論知道,參考SQL聯機幫助
    SQL code
    /*--創建一個只允許特定程序使用的數據庫用戶 創建一個用戶,這個用戶只有用我們特定的應用程序登錄 才具有訪問數據庫的權限,用其他工具登錄沒有任何權限 在下面的示例中,演示了如何控制登錄l_test 使其登錄后只允許訪問pubs數據庫的titles表 而對jobs表的訪問權限,只允許在某些許可的應用程序中訪問。 --鄒建 2004.09(引用請保留此信息)--*/ --創建測試環境 USE pubs --創建一個登錄 l_test, 密碼 pwd, 默認數據庫 pubs EXEC sp_addlogin 'l_test','pwd','pubs' --為登錄 l_test 在數據庫 pubs 中添加安全帳戶 u_test EXEC sp_grantdbaccess 'l_test','u_test' --授予安全帳戶 u_test 對 titles 表的 SELECT 權限 GRANT SELECT ON titles TO u_test --創建一個應用程序角色 r_p_test, 密碼 abc EXEC sp_addapprole 'r_p_test','abc' --授予角色 r_p_test 對 jobs 表的 SELECT 權限 GRANT SELECT ON jobs TO r_p_test GO --創建好上面的測試后,現在來測試如何使用應用程序角色 --我們把用戶及密碼告訴使用者,即告訴使用者,用戶是: l_test,密碼是: pwd --使用者可以用我們這個用戶在任何地方登錄,包含查詢分析器 --但是,用戶只能訪問 titles 表,不能訪問其他對象,如果建立用戶時不授予它任何權限,則它不訪問除guest用戶和public角色允許訪問外的任何對象 --OK,到這里,我們是把用戶控制住了 --下面我們再來說在程序中的處理,因為用戶在程序中登錄后,需要對jobs表有訪問權限的 --我們只需要在用戶登錄后,執行一句 EXEC sp_setapprole 'r_p_test',{Encrypt N'abc'},'ODBC' --這樣,我們登錄的用戶就轉變為 r_p_test 角色的權限,而它自身的權限丟失 --只要這個用戶不退出應用程序,他的權限就會保持 --如果用戶退出了當前應用程序,則他的權限自動收回 --同時,這個用戶即使沒有退出應用程序,他也是只在我們的應用程序中有權限,在其他地方登錄,也不會有權限 --因為這個密碼我們是不用給用戶的,所以,用戶沒有這個角色的密碼,也就限制了他只能在程序中使用我們的數據 --激活應用程序角色 r_p_test 前,登錄具有表 titles 的訪問權,但無表 jobs 的訪問權 SELECT titles_count=COUNT(*) FROM titles SELECT jobs_count=COUNT(*) FROM jobs /*--結果: titles_count ------------ 18 (所影響的行數為 1 行) 服務器: 消息 229,級別 14,狀態 5,行 2 拒絕了對對象 'jobs'(數據庫 'pubs',所有者 'dbo')的 SELECT 權限。 --*/ GO --用密碼 abc 激活 r_p_test 應用程序角色,并且在將此密碼發送到SQL Server之前對其加密 EXEC sp_setapprole 'r_p_test',{Encrypt N'abc'},'ODBC' GO --激活應用程序角色 r_p_test 后,登錄失去表 titles 的訪問權,獲取表 jobs 的訪問權 SELECT titles_count=COUNT(*) FROM titles SELECT jobs_count=COUNT(*) FROM jobs /*--結果 服務器: 消息 229,級別 14,狀態 5,行 2 拒絕了對對象 'titles'(數據庫 'pubs',所有者 'dbo')的 SELECT 權限。 jobs_count ----------- 14 (所影響的行數為 1 行) --*/ go --刪除測試 EXEC sp_dropapprole 'r_p_test' EXEC sp_revokedbaccess 'u_test' EXEC sp_droplogin 'l_test'

    posted on 2012-08-08 10:47 奮斗成就男人 閱讀(3440) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 大学生高清一级毛片免费| 最近免费中文字幕MV在线视频3| h视频在线观看免费完整版| 337p欧洲亚洲大胆艺术| 免费A级毛片无码专区| 亚洲国产成人私人影院| 免费观看无遮挡www的视频| 亚洲国产中文在线视频| 成年女人色毛片免费看| 精品久久久久亚洲| 在线a亚洲v天堂网2019无码| 成人久久免费网站| 亚洲精品在线不卡| 热99re久久精品精品免费| 免费无码一区二区| 亚洲av无码专区在线播放| 老汉精品免费AV在线播放| 激情综合亚洲色婷婷五月 | 久久天天躁狠狠躁夜夜免费观看| 亚洲av专区无码观看精品天堂 | a毛看片免费观看视频| 亚洲综合成人网在线观看| 永久免费毛片在线播放| 色屁屁在线观看视频免费| 国产亚洲精品a在线观看app| **毛片免费观看久久精品| 亚洲AV无码一区二区大桥未久| 亚洲综合另类小说色区| 真人做A免费观看| 黄网站色视频免费看无下截| 亚洲国产精品无码久久久不卡| 国产成人免费高清激情明星| 国产精品观看在线亚洲人成网| 亚洲精品无码国产| 免费看韩国黄a片在线观看| 一区二区3区免费视频| 亚洲日产2021三区| 国产成人亚洲影院在线观看| 国产免费一区二区三区| 七次郎成人免费线路视频| 亚洲欧洲尹人香蕉综合|