---
title: MySQL 租户执行细分到列的授权失败-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于 MySQL 租户执行细分到列的授权失败相关的常见问题和使用技巧，帮助您快速解决 MySQL 租户执行细分到列的授权失败的难题。
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

划线反馈

# MySQL 租户执行细分到列的授权失败

更新时间：2026-05-09 09:36

适用版本： V2.1.x、V2.2.x、V3.1.x、V3.2.x 内容类型：Troubleshoot  

## 适用版本

OceanBase 数据库 V2.x、V3.x 版本。

## 问题现象

尝试参照 MySQL 的语法，执行细分到列的授权，遇到语法错误的报错。

```shell
obclient [test]> grant update(str) on test.test_grant_tab to U_LDL@'%';

```

返回结果如下：

```shell
ERROR 1064(42000): You have an error in your SOL syntax; check the manual that corresponds to your OceanBase veraion for the right syntax to use near '(str) on test.test_grant_tab to U LDL@'*'' at line 1

```

## 问题原因

MySQL 租户下，指定授予权限的层级。权限可以分为以下几个层级：

- 全局层级：适用于所有的数据库。使用 `GRANT ALL ON *.*` 授予全局权限。
 - 数据库层级：适用于一个给定数据库中的所有目标。使用 `GRANT ALL ON db_name.*` 授予数据库权限。
 - 表层级：表权限适用于一个给定表中的所有列。使用 `GRANT ALL ON database_name.table_name` 授予表权限。 用 `*` 代替 table_name，表示赋予全局权限，即对数据库中的所有表赋权。

如上文所述，不支持列级授权属于预期内行为。

## 解决方法

可通过视图进行绕行，上述例子中，对应的语句如下：

1. 创建视图 `test_grant_view`。

   ```shell
   obclient [test]> create view test_grant_view as select id str from test.test_grant;

   ```
 2. 授权。

   ```shell
   obclient [test]> grant update on test grant view to U_LDL@'*';

   ```

上一篇

[OBServer 日志中出现-4122 报错的原因](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000702110)

下一篇

[OceanBase 数据库 Oracle 模式下的安全审计](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000707922) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
