“权限不足”指连接成功但元数据查询被拒,需手动验证information_schema等系统视图权限,并按数据库类型授予对应元数据访问权或配置DBeaver过滤器与驱动参数。

“权限不足”不是连不上,而是连上了却拿不到元数据——DBeaver 的表不显示,90% 以上是元数据查询被拒,不是连接失败。
确认是不是真连上了,还是元数据查不动
DBeaver 显示“权限不足”时,TCP 和认证通常已通过。真正卡住的是后续自动执行的元数据语句,比如 SELECT * FROM information_schema.tables(MySQL)、SELECT * FROM pg_catalog.pg_tables(PostgreSQL)或 SELECT owner, table_name FROM all_tables(Oracle)。这些语句失败了,导航树就空。
- 在 SQL 编辑器里手动执行对应元数据查询,看是否报错(如
ERROR: permission denied for schema pg_catalog) - 如果能查出数据,说明权限没问题,问题在 DBeaver 缓存或过滤器
- 如果报错,说明用户确实缺系统视图读取权,不是“没表”,是“不让看表清单”
按数据库类型补关键元数据权限
不同数据库对元数据访问的权限要求差异很大,不能一概而论:
- MySQL:必须有
SELECT权限 oninformation_schema(5.7+ 默认开启,但有些加固环境会 revoke);若只用单库,可跳过SHOW DATABASES,改用连接参数nullCatalogMeansCurrent=true - PostgreSQL:普通用户默认无
pg_catalog访问权;需显式授GRANT USAGE ON SCHEMA pg_catalog TO user;,或加角色pg_read_all_data(v14+) - Oracle:
SELECT_CATALOG_ROLE是最常用解法;若只查某 schema,确保该用户有SELECT ANY TABLE或目标 schema 的SELECT权限,并启用 DBeaver 的show other users objects选项 - OceanBase / 达梦:依赖
V$TABLESPACE、DBA_TABLESPACES等视图,普通用户需 DBA 显式授权SELECT权限,仅GRANT SELECT ON *.*不够
绕过权限限制:用过滤器和驱动参数硬控加载范围
不想(或不能)改权限?那就让 DBeaver 别去碰它:
- 进连接 → “编辑连接” → “过滤器” → 在 “包含” 里填死你要的 database 或 schema 名(如
test_db、hr),保存后刷新 - 进 “驱动属性” → 添加键值对:
useInformationSchema=true(强制走information_schema而非SHOW命令)、cacheMetaData=false(禁用元数据缓存,避免旧权限残留) - Oracle 用户务必勾选
show user synonyms和show other users objects,否则即使权限够,DBeaver 也默认只扫当前 user 下对象
达梦、OceanBase 等国产库要额外盯紧驱动和视图映射
这类数据库的 JDBC 驱动对标准 DatabaseMetaData 接口支持不全,DBeaver 依赖的 getTables() 方法可能直接返回空,跟权限无关。
- 先确认驱动版本匹配:达梦用
dmjdbcdriver18.jar(适配 v8.4+),OceanBase 必须用官方oceanbase-client(非 MySQL 兼容驱动) - 手动验证关键视图是否可查:
SELECT COUNT(*) FROM V$TABLESPACE;(达梦)、SELECT * FROM oceanbase.__all_virtual_table WHERE table_name = 'your_table';(OceanBase) - 若视图可查但 DBeaver 不显示,大概率是驱动未实现
getTableTypes()对TABLESPACE或VIEW类型的支持,此时只能靠 SQL 编辑器硬查,GUI 层无法修复
最易被忽略的一点:DBeaver 的“刷新”操作(F5)默认只刷新已加载的 schema,不会重新探测权限变更后的元数据范围。权限改完后,必须右键连接 → “Disconnect” → 再 “Connect”,才能触发全新元数据握手。











