现在的位置: 首页 > 综合 > 正文

sql server中guest用戶

2018年05月03日 ⁄ 综合 ⁄ 共 982字 ⁄ 字号 评论关闭

昨天上午对公司数据库服务器上的登录用户进行了清理,意外地发现在所有的数据库中,有三个数据库添加了guest用戶,三个数据库中有两个系统数据库,还有一个是公司的薪资数据库,我当时觉得在薪资数据库中存在guest用戶是很不安全的,因為只要能登錄到數據庫服務器上的任一登錄用戶,它們都是可以訪問擁有guest用戶的數據庫的,所以我就把guest用戶從薪資數據庫里刪除掉了。

結果下午剛一上班,工廠那邊就打電話講好多系統都不能使用了(比如訂單系統,樣品系統等等),看了一下程序的錯誤提示,"訪問薪資數據庫被拒絕"。我當時很疑惑,難道說我們的訂單,樣品這些系統會使用到薪資數據庫中的數據。調試了一下程序,發現這些系統確實調用到了薪資數據庫中的員工表,再聯想到薪資數據庫中被我刪除的guest用戶,問題其實就出在了這個guest用戶的身上了。

問題找到了,那就去解決它,在薪資數據庫中添加guest用戶,并授予它public的用戶角色,指定public角色能夠訪問employee表,這樣子的話,對於任一登錄用戶,只要他可以訪問服務器中的任一數據庫,即使這個登錄用戶沒有被添加到薪資數據庫中,他一樣也是可以訪問薪資數據庫的,只不過,它訪問的權限僅僅是查詢employee表。

對於某個數據庫中的某張表,如果這張表是需要公共訪問的,那就可以在這個數據庫中添加guest用戶,然後給guest用戶分配public的用戶角色,并指定public角色可以訪問的那些表。

 

 

对于sqlserver中的 guest用戶,联机帮助的解释如下:

guest 用户帐户允许没有用户帐户的登录访问数据库。当满足下列所有条件时,登录采用 guest 用户的标识:

  • 登录有访问 Microsoft® SQL Server™ 实例的权限,但没有通过自己的用户帐户访问数据库的权限。
  • 数据库中含有 guest 用户帐户。

可以将权限应用到 guest 用户,就如同它是任何其它用户帐户一样。可以在除 mastertempdb 外(在这两个数据库中它必须始终存在)的所有数据库中添加或删除 guest 用户。默认情况下,新建的数据库中没有 guest 用户帐户。

例如,若要将 guest 用户帐户添加到名为 Accounts 的数据库中,请在 SQL 查询分析器中运行下列代码:

USE Accounts
GO
EXECUTE sp_grantdbaccess guest

 

 

抱歉!评论已关闭.