Sybase ASE tempdb表权限咨询:跨用户访问及权限管控方法
Sybase tempdb共享表的权限问题解决方案
刚好之前在项目里碰到过一模一样的需求,给你梳理下具体的情况和解决办法:
一、tempdb中创建的表默认允许其他用户访问吗?
没错,默认情况下Sybase的tempdb对所有用户(通过public角色)开放了基础操作权限——包括查询、修改甚至删除。这是这类跨会话共享表的特性,但也确实容易出现误操作的风险。
二、无管理员权限时,如何管控表的权限?
因为没有SA权限,我们没法修改tempdb的全局默认权限,但可以在自己创建表之后,手动给单个表锁权限,具体步骤很简单:
- 创建表后立即收回public的所有权限
刚建好tempdb..your_shared_table之后,第一时间执行这条命令,把所有普通用户对该表的操作权限全部收回:
REVOKE ALL ON tempdb..your_shared_table FROM public;
执行完之后,除了表的创建者和管理员,其他用户就没法碰这个表了。
- 给需要访问的特定用户授予最小权限
如果确实需要让某些用户访问这个表,就针对性地给他们授予必要的权限,比如只给查询权限:
GRANT SELECT ON tempdb..your_shared_table TO user_b;
如果需要让对方能修改数据,就加INSERT, UPDATE;如果需要建索引就加ALTER——记住遵循最小权限原则,别给多余的权限。
- 验证权限是否设置正确
可以用这个命令查看表的权限明细,确认设置没问题:
sp_helprotect tempdb..your_shared_table;
额外提醒
tempdb是Sybase里的临时数据库,每次数据库重启后所有内容都会被清空,所以重启后你得重新创建这个共享表,再重新设置一遍权限。- 为了避免创建表和设置权限之间的窗口被误操作,建议把创建表和权限调整的语句放在同一个脚本里执行,一次性完成。
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

