RENAME会导致其他用户权限丢失吗?

【 使用环境 】测试环境
【 OB or 其他组件 】OB
【 使用版本 】未知
【问题描述】现有一张表Student,使用主账号将其改名为Student_back后,副账号执行select发现提示找不到表,但是rename之前已经赋权给其他账户了,询问rename命令是否会导致已经赋权的表权限取消
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

日志采集场景: SQL执行出错
日志采集命令: obdiag gather scene run --scene=observer.sql_err --env “{db_connect=’-h127.0.0.1 -P2881 -utest@test -p****** -Dtest’, trace_id=‘Yxx’}”

为了更好地帮助您解决这个问题,建议您使用上述obdiag命令收集相关日志信息并提供给我们。此命令将针对SQL执行错误进行日志采集,有助于我们了解RENAME操作后副账号无法查询表的具体原因。

另外,为了确定具体的问题,在此需要您提供一些信息:

  1. 您使用的OceanBase版本号是多少?这可以帮助我们确认是否存在已知的版本相关问题。
  2. 在重命名表之前,是否对副账号进行了明确的权限授予操作?请提供相关的授权语句。
  3. 除了RENAME操作外,是否还执行了其他DDL(如DROP、CREATE等)或DML(如INSERT、UPDATE等)操作?
  4. 是否可以尝试重新授予权限给副账号,并观察问题是否仍然存在?
  5. 请确认在主账号下,改名后的表(Student_back)是否能够正常访问。

附上敏捷诊断工具 obdiag 使用帮助链接

ob版本号发一下 具体操作的步骤发一下 修改表名 不会导致权限丢失

重命名前已经赋权过,并且这是一个老表,运行正常,在rename过后才出现找不到表的情况,目前环境限制我没法得知具体的ob版本

我们有张表AAA,然后我们有两个账户,一个叫CD,一个叫CDDML

CD是总账户,CDDML是只执行DML的,
然后我们将AAA这张表RENAME成AAA_BACK,然后又重新建了一张表AAA,然后给AAA赋权,执行后发现使用CDDML账户执行select AAA_BACK提示表不存在

版本号还在问,这个和版本有关系吗?

好的我问问

3.2.33

根据文档库中的信息,当您对表进行重命名(RENAME)操作时,并不会自动撤销或更改已授予其他用户的权限。因此,在理论上,如果副账号之前已经被赋予了对原表的访问权限,那么在表被重命名之后,该副账号应该仍然能够访问这张表,只是需要使用新的表名。

对于您提到的情况——即重命名后副账号无法访问旧表名的问题,这可能是因为客户端缓存、会话上下文或其他因素导致的。通常情况下,只要确保使用的是最新的表名并且权限没有变化,就不应该出现找不到表的情况。

但是从您的描述来看,似乎是在重命名之后又创建了一张同名的新表并重新赋权,这时需要注意以下几点:

  • 表名匹配:确保在执行SELECT语句时使用的表名与实际存在的表名完全一致,包括大小写敏感性(取决于数据库配置)。例如,如果您在一个区分大小写的环境中工作,则AAA_BACKaaa_back被视为不同的名称。

  • 权限检查:虽然理论上重命名不会影响已有权限,但如果涉及到不同版本之间的差异或者某些特殊配置,可能会有例外情况。您可以尝试通过系统视图如ALL_TAB_PRIVS来验证目标用户是否确实拥有对特定表的适当权限。

  • 会话刷新:有时候,特别是在长时间运行的应用程序中,可能会遇到缓存问题。尝试关闭并重新打开连接,以确保所有元数据都是最新的。

关于版本3.2.33,根据提供的信息,OceanBase 在这个版本上不应该存在因重命名而导致权限丢失的问题。不过,为了更加确切地了解是否存在任何潜在的bug或特性行为,建议确认具体的补丁级别以及是否有相关的更新说明指出此类问题。

综上所述,按照标准行为,重命名表不应该导致需要重新赋权。但在实际应用中,考虑到各种复杂因素的影响,确保正确无误的最佳实践是每次结构变更后都仔细测试相关功能,并在必要时重新明确授予权限。

基于以上分析,您可以采取以下步骤排查问题:

  1. 确认CDDML账户是否具有对AAA_BACK表的查询权限;
  2. 尝试清除客户端缓存或重启会话;
  3. 使用正确的表名进行查询;
  4. 如果问题依旧存在,请提供更详细的日志信息以便进一步诊断。

希望这些信息能帮助到您!如果有更多疑问,欢迎继续交流。

具体信息可参考以下文档:

  1. obcdc 配置项说明
  2. RECOVER TABLE
  3. 按表恢复相关参数介绍
  4. 回收站
  5. 审计指定数据库对象
  6. 更新数据
  7. V$OB_MEMSTORE_INFO
  8. 系统视图总览
  9. GV$DML_STATS

(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)

我用的ob4.x测试的 没有问题 你这个是企业版 建议你找企业版的客户经理


好的谢谢