)
我们的目的SQLserver开设一个用户然后这个用户只能访问2张我指定的表。需要在SQLserver SSMS可视化管理工具中简单设置就可以实现。需要如下三步或三层设置即可一层设置数据库服务器的授权只给public1. 页面作用控制这个todify账号登录 SQL Server 整个实例后能拥有哪些服务器级大权权限范围是整台数据库服务器所有库。2. 勾选状态解读仅勾选了public这是所有 SQL 登录账号默认必带的最小公共角色只有最基础登录连通权限没有任何服务器管理权限其余所有角色sysadmin超级管理员、serveradmin服务器配置、dbcreator建库权限、bulkadmin批量导入、各类 ##MS_xxx## 系统内置角色全部未勾选 ✅ 代表这个账号不能管理服务器、不能新建数据库、不能停服务、不能查看服务器全局审计信息权限收得非常严符合普通业务账号的安全要求。3. 关键高危角色提醒绝对不要勾选sysadmin最高权限能操作整台实例所有库、所有数据严禁给业务账号勾选serveradmin可修改服务器配置、关闭数据库服务dbcreator可创建 / 删除任意数据库securityadmin能修改其他账号的权限。二层设置数据库的授权只给public1. 上半部分映射数据库列表仅勾选了数据库 含义这个登录账号只在 XXX 库里生成对应的数据库用户默认架构是 dbo其他系统库master/model/msdb/tempdb全部不映射账号登录后无法访问这些系统库。默认架构dbo后续给表授权时就用dbo.表名来分配权限。2. 下半部分数据库角色成员身份xxx 库内的批量权限当前仅勾选public其余角色全空是实现「仅访问特定表」的关键前提重点高危角色解释全部不能勾选角色权限危害db_datareader能读取当前库所有表 / 视图一旦勾选就算你只给单张表授权用户也能查全库所有表直接违背「只看特定表」需求db_datawriter能对全库所有表做增删改db_owner当前数据库最高权限可删表、改权限、删数据db_ddladmin可新建 / 删除表、修改表结构✅ 你这里只保留public代表账号进入 xxx 库后默认看不到、操作不了任何表后续只能靠「单独给某几张表分配 SELECT/INSERT 等对象权限」来开放访问完美匹配你的需求。三层设置表属性页对单张表的授权( 单表的权限按需求勾选)前置确认你已完成登录todify服务器角色只勾选public用户映射仅勾选XXX库数据库角色只保留public无 db_datareader/db_datawriter/db_owner默认架构dbo步骤 1定位目标数据表回到 SSMS【对象资源管理器】展开数据库 →XXX库→表找到你要授权的那张表格式dbo.表名右键该表 → 选择【属性】步骤 2进入权限配置页弹出「表属性」窗口左侧菜单栏点击【权限】点击窗口右上角【搜索】按钮弹窗选择特定对象 → 确定点【对象类型】只勾选【用户】其他全部取消 → 确定点【浏览】在列表里勾选库用户todify→ 一路点【确定】回到权限主界面步骤 3勾选这张表要开放的权限核心下方「显式权限」列表按业务需求在授予列打勾场景 1仅只读推荐大部分查询账号只勾选选择 (SELECT)可选取消不要勾选「查看定义」用户就看不到表字段结构场景 2增删改查全权限依次勾选选择 (SELECT)插入 (INSERT)更新 (UPDATE)删除 (DELETE)注意拒绝列不要随意勾选拒绝优先级最高会覆盖授予权限不要勾选「执行、更改、控制」这类高危权限步骤 4可选禁止用户查看表结构在权限列表找到查看定义 (View Definition)「授予」不打勾也不要拒绝保持空白用户无法通过sp_help、SSMS 列表查看该表字段详情步骤 5保存配置点击窗口底部【确定】权限即时生效。结果对单张表的授权后访问数据库只能看见单张表。