sqlserver 新建只讀權限用戶


1,新建只能訪問某一個表的只讀用戶。

--添加只允許訪問指定表的用戶:
execsp_addlogin'用戶名','密碼','默認數據庫名'

--添加到數據庫
execsp_grantdbaccess'用戶名'

--分配SELECT整表權限
GRANTSELECTON表名TO[用戶名]

--分配SELECT權限到具體的列
GRANTSELECTON表名(id,AA)TO[用戶名]

例如:

--添加只允許訪問指定表的用戶:
execsp_addlogin'read','123456','test'

execsp_grantdbaccess'read'

--分配SELECT整表權限

GRANTSELECTONdbo.UserCardsTO[read]

 

 

2,新建訪問整一個數據庫的只讀用戶

--添加只允許訪問指定表的用戶:
execsp_addlogin'用戶名','密碼','默認數據庫名'

--添加到數據庫
execsp_grantdbaccess'用戶名'

--添加到角色
execsp_addrolemember'db_datareader','用戶名'

 

3,固定服務器角色

sysadmin
可以在SQLServer中執行任何活動。

serveradmin
可以設置服務器范圍的配置選項,關閉服務器。

setupadmin
可以管理鏈接服務器和啟動過程。

securityadmin
可以管理登錄和CREATEDATABASE權限,還可以讀取錯誤日志和更改密碼。

processadmin
可以管理在SQLServer中運行的進程。

dbcreator
可以創建、更改和除去數據庫。

diskadmin
可以管理磁盤文件。

bulkadmin
可以執行BULKINSERT語句。

4,(用戶映射)數據庫角色成員身份

db_owner執行數據庫中的所有維護和配置活動。
db_accessadmin添加或刪除Windows用戶、組和SQLServer登錄的訪問權限。
db_datareader讀取所有用戶表中的所有數據。
db_datawriter添加、刪除或更改所有用戶表中的數據。
db_ddladmin在數據庫中運行任何數據定義語言(DDL)命令。
db_securityadmin修改角色成員身份並管理權限。
db_backupoperator備份數據庫。
db_denydatareader無法讀取數據庫用戶表中的任何數據。
db_denydatawriter無法添加、修改或刪除任何用戶表或視圖中的數據。

 

 

如果要對SQL Server表分配只讀權限,應該如何實現呢?下面就教您針對SQL Server表的只讀權限分配方法,希望對您學習SQL Server表權限方面有所啟迪。

  1. --先創建測試庫test_tmp  
  2.  
  3. --根據現有的表創建兩張表  
  4.  
  5. SELECT TOP 100 * INTO test_tab1 FROM mistest_09428.dbo.squarer;  
  6.  
  7. SELECT TOP 100 * INTO test_tab2 FROM mistest_09428.dbo.squarer;  
  8.  
  9. --創建角色  
  10. EXEC sp_addrole 'test_role1' ;  
  11.  
  12. --分配select的權限給角色test_role1  
  13. GRANT SELECT ON test_tab1 TO test_role1;  
  14. GRANT SELECT ON test_tab2 TO test_role1;  
  15.  
  16. --add登陸dap570,密碼dap570,默認庫為test_tmp  
  17. EXEC sp_addlogin 'dap570','dap570','test_tmp';  
  18.  
  19. --給dap570添加帳戶test  
  20. EXEC sp_grantdbaccess 'dap570','test'  
  21.  
  22. --將角色test_role1分配給text  
  23. EXEC sp_addrolemember 'test_role1','test';  
  24. --over  
  25.  
  26. --換dap570來登錄數據庫test_tmp  
  27.  
  28. --然后測試  
  29.  
  30. /*  
  31. DELETE FROM  test_tab1  
  32.  
  33. INSERT INTO test_tab1(ingotno) VALUES('2222')  
  34.  
  35. UPDATE test_tab1 SET ingotno = '3333' 
  36. */  


免責聲明!

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



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