管理权限的权限控制,主要靠系统角色和对象所有者来兜底,像sysadmin这种角色就挺全能,啥都能干,权限大到飞起。数据库对象的所有者也不差,谁创建的谁做主,想查数据、删数据、改结构、改权限,基本都随你操作。

SQL SERVER 的安全机制还挺精细,尤其是暗示性权限,多操作你觉得“我没授权啊”,其实系统已经默认给了,比如拥有表的用户自然能增删改。你要真不想别人动你的表,最好还是检查下谁是owner,该转的就转。

如果你之前总觉得数据库权限一团糟,建议你看看下面这些资料,分类清晰、讲得也明白,尤其是第 1 篇,适合刚入门又有点基础的你。

SQL Server 2008 对象权限分类解析,比较系统地讲了各种权限类型
数据库安全控制的对象权限授权语句,适合搞清楚具体的授权怎么写
oracle 数据库的权限分配系统权限与对象权限详解,Oracle 那边的朋友也可以看看
数据库视图访问权限控制,如果你用得多视图,权限分配千万别掉以轻心
数据库对象权限管理的续篇-数据库教学资源,后续进阶内容,值得一读
Oracle 数据库项目权限控制策略,适合项目落地阶段参考
数据库权限控制的设计方案,讲架构的那位朋友可以看看这篇

如果你经常用户权限,或者要搭建一套比较严谨的权限系统,最好还是理清楚这些隐含机制,不然出问题的时候真的难查清楚。嗯,有时候权限不是没授权,而是你想不到系统已经默认给了。