问题现象
通过 OCP 新增了个 test001 的租户,配置的权限是库级别的,限制 test001 的库,还能查看 information_schema 的库。
通过 OBCLient 连接
test001租户。[root@xxxx]# obclient -hxxx.xxx.xxx.xxx -P2881 -utest001@adminxxx -p查看 MySQL 模式下租户的数据库信息。
obclient(test001@adminxxx)[(none)]> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | test001 | +--------------------+ 2 rows in set (0.003 sec)
问题原因
information_schema 库默认是所有普通租户都有权限查看的,和 MySQL 保持一致。 在 OceanBase 数据库的 MySQL 模式下,普通租户的默认权限包括 SELECT on information_schema.*。这意味着普通租户在创建后,默认拥有对 information_schema 库中所有表的只读权限,可以查询其中的数据。 如果在连接 MySQL 租户时未指定默认数据库,则会默认连接到 information_schema 库。这也进一步表明,information_schema 是普通租户可访问的默认系统库。 需要注意的是,虽然晋通租户可以查看 information_schema 库中的元数据信息,但这些信息仅限于该租户自身的数据库对象和权限范围内的内容。不同租户之间的数据是完全隔离的,普通租户无法通过 information_schema 查看其他租户的数据或对象信息。
适用版本
OceanBase 数据库 V4.x 版本。