You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建仅拥有单个MSSQL数据库全权限且无法查看服务器资源的用户

我来帮你搞定这个问题!要创建一个仅拥有指定MSSQL数据库全部权限、且无法查看服务器其他资源的用户,你可以按照以下步骤操作,分T-SQL命令和图形界面两种方式,按需选择:

方法一:使用T-SQL命令(推荐,更精准可控)

这是最直接的方式,适合习惯用脚本操作的场景:

  1. 创建服务器登录名(无服务器级权限)
    先在服务器层面创建登录,注意不要赋予任何高权限的服务器角色,同时把默认数据库设为目标库:

    -- 替换成你的登录名、密码和目标数据库名
    CREATE LOGIN [MyRestrictedLogin] WITH PASSWORD = 'StrongPass123!', DEFAULT_DATABASE = [MyTargetDB];
    
  2. 在目标数据库中创建关联用户
    切换到目标数据库,将刚才的登录映射为数据库用户:

    USE [MyTargetDB];
    CREATE USER [MyRestrictedUser] FOR LOGIN [MyRestrictedLogin];
    
  3. 赋予目标数据库的全部权限
    要让用户拥有数据库内的所有操作权限,最简单的是将其加入db_owner角色(这个角色包含数据库的所有权限):

    USE [MyTargetDB];
    EXEC sp_addrolemember 'db_owner', 'MyRestrictedUser';
    

    如果你不想用db_owner,也可以直接授予CONTROL权限(效果一致):

    USE [MyTargetDB];
    GRANT CONTROL ON DATABASE::[MyTargetDB] TO [MyRestrictedUser];
    
  4. 关键:限制服务器层面的可见性
    这一步是核心,确保该登录看不到其他数据库、服务器用户等资源:

    -- 拒绝查看服务器上任何数据库的权限(仅能看到默认数据库)
    DENY VIEW ANY DATABASE TO [MyRestrictedLogin];
    
    -- 可选:拒绝查看服务器上的其他登录名
    DENY VIEW ANY LOGIN TO [MyRestrictedLogin];
    
方法二:使用SQL Server Management Studio(SSMS)图形界面

如果你更习惯可视化操作,可以按以下步骤来:

  1. 打开SSMS并连接到目标服务器,展开安全性 -> 登录名,右键选择新建登录名。
  2. 在「常规」选项卡:
    • 输入登录名,选择「SQL Server身份验证」,设置强密码。
    • 勾选「强制密码过期」(可选,根据安全需求),将「默认数据库」选择为你的目标数据库。
  3. 在「服务器角色」选项卡:不要勾选任何服务器角色(比如sysadmin、serveradmin这些都要留空),避免赋予服务器级权限。
  4. 在「用户映射」选项卡:
    • 勾选你的目标数据库,在下方「数据库角色成员身份」里勾选db_owner(确保拥有该库的全部权限)。
    • 点击「确定」完成用户创建。
  5. 设置服务器权限限制:
    • 找到刚才创建的登录名,右键选择「属性」→「权限」。
    • 在「显式权限」列表中找到VIEW ANY DATABASE和VIEW ANY LOGIN,将它们的权限设置为「拒绝」,最后点击「确定」。
测试验证

用新创建的登录名连接SSMS,你会发现:

  • 只能看到目标数据库,其他数据库完全不可见。
  • 无法查看服务器层面的其他登录名、服务器角色等资源。
  • 对目标数据库拥有所有操作权限(比如创建表、修改数据、备份还原等)。

内容的提问来源于stack exchange,提问作者chen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:54:39