1. 程式人生 > 其它 >關於sql server的遠端連線 與許可權分配操作

關於sql server的遠端連線 與許可權分配操作

1: 關於sqlserver的遠端連線. 

 這個連線更在webConfig中配置的一樣, 需要加上1433埠. 在sqlserver 在是以逗號作為分割.  遠端連線自然要帶上伺服器的ip地址.

2: 關於許可權分配.

方法一: 使用sql 語句執行 分配操作

授予Shema dbo下物件的定義許可權給某個使用者(也就是說該使用者可以修改架構dbo下所有表/檢視/儲存過程/函式的結構)

use [Your DB NAME]
GRANT VIEW DEFINITION ON SCHEMA :: dbo to [THE USER NAME]

回收某個使用者對Shema dbo下物件的定義許可權(也就是說該使用者不可以修改架構dbo下所有表/檢視/儲存過程/函式的結構)

use [Your DB NAME]
DENY VIEW DEFINITION ON SCHEMA :: dbo to [THE USER NAME]

允許某個使用者執行Shema dbo下定義的儲存過程

 GRANT EXEC  ON SCHEMA :: dbo TO  [your_DB_account]

不允許某個使用者執行Shema dbo下定義的儲存過程

 DENY EXEC  ON SCHEMA :: dbo TO  [your_DB_account]


允許某個使用者可以對Schema dbo下物件進行增刪改查操作

GRANT SELECT  ON SCHEMA :: dbo TO [your_DB_account]  -- 允許查詢資料許可權
GRANT UPDATE  ON SCHEMA :: dbo TO [your_DB_account]  -- 允許更新資料許可權
GRANT INSERT  ON SCHEMA :: dbo TO [your_DB_account]  -- 允許插入資料許可權
GRANT DELETE  ON SCHEMA :: dbo TO [your_DB_account]  -- 允許刪除資料許可權

不允許某個使用者對Schema dbo下物件進行增刪改查操作

DENY SELECT  ON SCHEMA :: dbo TO [your_DB_account]  -- 不允許查詢資料許可權
DENY UPDATE  ON SCHEMA :: dbo TO [your_DB_account]  -- 不允許更新資料許可權
DENY INSERT  ON SCHEMA :: dbo TO [your_DB_account]  -- 不允許插入資料許可權
DENY DELETE  ON SCHEMA :: dbo TO [your_DB_account]  -- 不允許刪除資料許可權

限制使用者對資料庫物件(比如表/檢視/儲存過程等)的操作行為


允許使用者修改資料庫表T_Testing的結構

GRANT VIEW DEFINITION ON [dbo].[T_Testing] to [THE USER NAME]

不允許使用者修改資料庫表T_Testing的結構

DENY VIEW DEFINITION ON [dbo].[T_Testing] to [Customer]


允許使用者對資料庫表T_Testing進行增刪改查操作

GRANT SELECT  ON [dbo].[T_Testing] TO [your_DB_account]  -- 允許查詢資料許可權
GRANT UPDATE  ON [dbo].[T_Testing] TO [your_DB_account]  -- 允許更新資料許可權
GRANT INSERT  ON [dbo].[T_Testing] TO [your_DB_account]  -- 允許插入資料許可權
GRANT DELETE  ON [dbo].[T_Testing] TO [your_DB_account]  -- 允許刪除資料許可權

不允許使用者對資料庫表T_Testing進行增刪改查操作

DENY SELECT  ON [dbo].[T_Testing] TO [your_DB_account]  -- 不允許查詢資料許可權
DENY UPDATE  ON [dbo].[T_Testing] TO [your_DB_account]  -- 不允許更新資料許可權
DENY INSERT  ON [dbo].[T_Testing] TO [your_DB_account]  -- 不允許插入資料許可權
DENY DELETE  ON [dbo].[T_Testing] TO [your_DB_account]  -- 不允許刪除資料許可權

上面這些對資料庫表的語句同樣適用於其它資料庫物件,例如檢視/儲存過程等,如下所示:

GRANT VIEW DEFINITION ON [dbo].[V_Testing] to [your_DB_account] --允許使用者修改檢視V_Testing的定義
DENY VIEW DEFINITION ON [dbo].[V_Testing] to [your_DB_account]--不允許使用者修改檢視V_Testing的定義

GRANT VIEW DEFINITION ON [dbo].[P_Testing] to [your_DB_account] --允許使用者修改儲存過程P_Testing的定義
DENY VIEW DEFINITION ON [dbo].[P_Testing] to [your_DB_account]--不允許使用者修改儲存過程P_Testing的定義

但是注意SELECT/UPDATE/DELETE/INSERT這幾個增刪改查的許可權不適用於儲存過程

此外對資料庫物件(比如表/試圖/儲存過程等)的上述操作行為,還可以直接設定在資料庫角色(注意是資料庫角色,不是資料庫Instance角色)上,例如:

允許資料庫MyDataBase的角色MyRole對錶T_Testing擁有增刪改查許可權

 

USE [MyDataBase]

GRANT SELECT  ON [dbo].[T_Testing] TO [MyRole]  -- 允許查詢資料許可權
GRANT UPDATE  ON [dbo].[T_Testing] TO [MyRole]  -- 允許更新資料許可權
GRANT INSERT  ON [dbo].[T_Testing] TO [MyRole]  -- 允許插入資料許可權
GRANT DELETE  ON [dbo].[T_Testing] TO [MyRole]  -- 允許刪除資料許可權

 

不允許資料庫MyDataBase的角色MyRole對錶T_Testing進行增刪改查操作

 

USE [MyDataBase]

DENY SELECT  ON [dbo].[T_Testing] TO [MyRole]  -- 不允許查詢資料許可權
DENY UPDATE  ON [dbo].[T_Testing] TO [MyRole]  -- 不允許更新資料許可權
DENY INSERT  ON [dbo].[T_Testing] TO [MyRole]  -- 不允許插入資料許可權
DENY DELETE  ON [dbo].[T_Testing] TO [MyRole]  -- 不允許刪除資料許可權

 

此外對於SELECT/UPDATE這兩個改查的許可權還可以直接設定到表/試圖的列上,例如下面語句我們設定資料庫MyDataBase的角色MyRole擁有表T_Tesing和檢視V_Testing中列Name的改查許可權

 

USE [MyDataBase]

GRANT SELECT  ON [dbo].[T_Testing]([Name]) TO [MyRole]  -- 允許查詢表T_Testing的Name列資料
GRANT UPDATE  ON [dbo].[T_Testing]([Name])  TO [MyRole]  -- 允許更新表T_Testing的Name列資料

GRANT SELECT  ON [dbo].[V_Testing]([Name]) TO [MyRole]  -- 允許查詢檢視V_Testing的Name列資料
GRANT UPDATE  ON [dbo].[V_Testing]([Name])  TO [MyRole]  -- 允許更新檢視V_Testing的Name列資料

 

使用資料庫許可權控制使用者的訪問行為


如果希望某個使用者只擁有某個資料庫的只讀許可權,最簡單的辦法就是隻將該資料庫的角色db_datareader賦予使用者即可:

exec sp_addrolemember' db_datareader','使用者名稱'

這裡最後列出所有資料庫Instance角色和(使用者對映)資料庫角色的含義:

資料庫Instance角色:

  • sysadmin 可以在SQLServer中執行任何活動。
  • serveradmin 可以設定伺服器範圍的配置選項,關閉伺服器。
  • setupadmin 可以管理連結伺服器和啟動過程。
  • securityadmin 可以管理登入和CREATEDATABASE許可權,還可以讀取錯誤日誌和更改密碼。
  • processadmin 可以管理在SQLServer中執行的程序。
  • dbcreator 可以建立、更改和除去資料庫。
  • diskadmin 可以管理磁碟檔案。
  • bulkadmin 可以執行BULKINSERT語句。

(使用者對映)資料庫角色:

  • db_owner執行資料庫中的所有維護和配置活動。
  • db_accessadmin新增或刪除Windows使用者、組和SQLServer登入的訪問許可權。
  • db_datareader讀取所有使用者表中的所有資料。
  • db_datawriter新增、刪除或更改所有使用者表中的資料。
  • db_ddladmin在資料庫中執行任何資料定義語言(DDL)命令。
  • db_securityadmin修改角色成員身份並管理許可權。
  • db_backupoperator備份資料庫。
  • db_denydatareader無法讀取資料庫使用者表中的任何資料。
  • db_denydatawriter無法新增、修改或刪除任何使用者表或檢視中的資料。

方法二: 想讓某個使用者訪問資料庫特定的表或檢視,達到保密的效果

在新建登入使用者中, 選擇使用者對映頁面

進行設定授予的資料庫