排查数据权限问题
如果某人对问题或查询返回的数据的访问级别不正确,您需要排查不同级别的 数据权限,从最精细的开始。
行和列权限
- [排查行和列安全设置][troubleshooting-row-and-column-security]。
原生查询(SQL)权限
表或架构权限
某个用户组无法访问 SQL 编辑器
- 通过禁用浏览器扩展并刷新浏览器来确保脚本正在加载。
- 转到 **管理** > **权限**,然后选择相关用户组。
- 找到您要授予 SQL 访问权限的数据库。
- 从 **查看数据** 下拉菜单中,选择 **可以查看**。
- 从 **创建查询** 下拉菜单中,选择 **查询生成器和原生**。
- 检查访问问题是否已修复.
有关不同类型数据库权限的更多信息,请查看我们权限文档中 关于数据访问的部分。
某个用户组对某个表或架构的访问权限不正确
- 转到 **管理** > **人员**,并检查该人员是否属于 多个具有冲突权限的用户组。
- 如果该人员属于多个用户组
- 将该人员从具有更广泛权限的用户组中移除,或者
- 转到 **管理** > **权限**,然后更改 **数据访问** 权限类型。
- 检查访问问题是否已修复.
解释
如果某人是多个 用户组 的成员,Metabase 将授予其成员身份的所有用户组中 *最宽松* 的访问级别。
例如,如果某人是两个用户组的成员——一个用户组授予对数据库或表的“可以查看”的 [查看数据] 访问权限,另一个用户组授予“阻止”对该数据库的访问权限——那么该人员将能够查看该数据。
请记住,所有人都属于 **所有用户** 用户组。我们建议您撤销对 **所有用户** 用户组的权限,并创建新用户组来选择性地将权限应用于您的数据源。
某个用户组可以查看包含受限数据的集合
此功能仅在 Pro 和 Enterprise 计划(包括自托管和 Metabase Cloud)上提供。
- 转到 **管理** > **权限**,然后选择用户组。
- 选择您要限制的数据库或表。
- 将 **查看数据** 权限设置为 **阻止**,然后点击 **保存**。
- 检查访问问题是否已修复.
解释
如果您授予某个用户组对数据库或表的“可以查看”数据访问权限,那么人们就可以查看源自该数据库的已保存问题和仪表板,只要这些问题和仪表板存储在他们有权访问的集合中。
**阻止** 数据权限在 Metabase 的 Pro 和 Enterprise 版本 上可用。如果您阻止某个用户组访问数据库,该用户组的成员将无法看到此数据库的任何数据,无论其集合权限如何。
收到“permission denied”(权限被拒绝)错误消息
如果您收到类似“permission denied to <your table>”(权限被拒绝访问 <您的表>)的错误消息,您需要检查 Metabase 应用程序是否具有查询您数据库的正确权限。
- 转到 SQL 编辑器,并针对相关表或架构运行基本查询。
SELECT 1 FROM <your table>; - 获取 Metabase 用于连接数据库的凭据。如果您不确定凭据是什么,请咨询您的数据库管理员。
- 使用另一个应用程序(如您的 CLI 或数据库 IDE),使用 Metabase 连接到数据库的相同凭据连接到您的数据库,并运行步骤 1 中的查询。
- 如果您在步骤 1 和 3 中都无法访问该表或架构,请咨询您的数据库管理员以:
- 授予 Metabase 使用的角色数据库权限,或者
- 提供一组具有正确权限的数据库凭据。
- 检查访问问题是否已修复.
解释
您的数据库有自己的权限集,这些权限是为每个登录者(或应用程序)配置的。
数据库权限在您的数据库连接级别应用, *在* Metabase 中应用数据和集合权限 *之前*。
这意味着,在数据库端配置的设置可以阻止 Metabase 连接到某些架构或表,无论您在 Metabase 端设置了什么。
检查某人对某个表或架构的访问权限
- 打开一个无痕浏览器窗口。
- 以相关人员的身份登录 Metabase。
- 运行一个问题、仪表板或原生查询,以确认该人员可以看到他们应该看到的数据。
您有其他问题吗?
您还卡住了吗?
如果您无法使用故障排除指南解决问题
- 搜索或咨询 Metabase 社区。
- 搜索已知错误或限制。
阅读其他版本的 Metabase 的文档。