2016-11-21 91 views
0

我有一個數據庫,並根據用戶我想他們使用存儲過程來看到不同的東西。我不希望他們能夠像select一樣執行直接的SQL命令。這可能嗎?我可以將SQL用戶限制爲僅存儲過程嗎?

+1

是的,這是可能的。只能授予程序權限。 – jarlh

+2

是的,只授予您希望他們使用的程序的執行權限。 –

+1

之類的東西的權限等都是**高度依賴**在其RDBMS這是出於。請添加一個標籤來指定您是使用'mysql','postgresql','sql-server','oracle'還是'db2' - 或者其他的東西。已添加標籤 –

回答

1

在過去,我不得不允許訪問一些程序,我會給登錄公共權利和數據庫映射。這將讓他們登錄,但不做任何事情。然後我給每個存儲過程選擇權。我很確定我不必做任何事情。

如果你有大量的存儲過程,那麼本文將幫助你創建這個特定角色/模式。

http://www.patrickkeisler.com/2012/10/grant-execute-permission-on-all-stored.html

+0

我有從其他來源的反饋,SQL注入可能與此解決方案的問題。我可以避免這個問題嗎? –

+0

這是關於執行權。與sql注入無關。這個話題在很多其他地方都有詳細討論,並且關於你如何開發你的存儲過程,而不是你如何賦予它們執行權限。 –

1

你需要從所有組中刪除該用戶就用GRANT你希望他們有存儲過程。

-- Syntax for SQL Server and Azure SQL Database 

-- Simplified syntax for GRANT 
GRANT { ALL [ PRIVILEGES ] } 
     | permission [ (column [ ,...n ]) ] [ ,...n ] 
     [ ON [ class :: ] securable ] TO principal [ ,...n ] 
     [ WITH GRANT OPTION ] [ AS principal ] 
+1

他爲什麼要將他們從「羣體」中刪除?他可能應該創建一個特定的**角色**。 –

+0

我發現這是刪除所有權利的最快方法。從其他來源,SQL注入也許不是整齊,雖然 –

+0

我已經得到的反饋可能是該解決方案的問題。我可以避免這個問題嗎? –

相關問題