SHOW DATABASES返回不全是因为用户缺少SHOW DATABASES权限或服务器启用了skip-show-database,DBeaver仅展示该命令结果而非主动过滤;需用SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA配合权限函数验证真实可见库。

直接看 SHOW DATABASES 结果,就是当前账号能列出的所有库 —— 但前提是没被 DBeaver 自动过滤掉。
为什么 SHOW DATABASES 返回不全?
MySQL 默认开启 skip-show-databases 或者用户缺少 SHOW DATABASES 权限时,命令会返回空或只显示自己创建的库(如 information_schema)。DBeaver 在连接初始化阶段会执行该命令来填充左侧数据库列表,结果不全,本质是服务端限制,不是 DBeaver 隐藏了什么。
- 用当前账号连上 MySQL 命令行,手动执行
SHOW DATABASES,对比结果是否一致 - 检查权限:运行
SHOW GRANTS FOR CURRENT_USER(),确认输出里有没有SHOW DATABASES这一行 - 如果没这行,说明账号被显式拒掉了该权限(常见于生产环境最小权限策略)
DBeaver 里怎么快速确认权限边界?
别依赖左侧导航树的“视觉完整性”,它只是缓存了上次 SHOW DATABASES 的结果。更可靠的方式是直接查元数据:
- 在 SQL 编辑器中运行:
SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE HAS_DATABASE_PRIVILEGE(CURRENT_USER(), SCHEMA_NAME, 'USAGE') = 1 - 这条语句绕过
SHOW DATABASES权限限制,靠HAS_DATABASE_PRIVILEGE()函数逐个探测,返回所有你有USAGE权限的库名 - 注意:MySQL 8.0+ 才支持该函数;5.7 及以前只能靠
SHOW GRANTS+ 人工比对
连接配置里有个隐藏开关影响库可见性
DBeaver 的 MySQL 连接设置里,“Connection settings” → “Driver properties” 下有个参数叫 includeAllDatabases,默认为 false。设成 true 后,DBeaver 会强制尝试列出所有库(即使 SHOW DATABASES 失败),但前提是账号至少对每个库有 USAGE 权限,否则仍不可见。
- 这个参数不改变实际权限,只改变 DBeaver 的探测行为
- 开启后可能变慢,尤其库数量多、网络延迟高时
- 某些老版本驱动不识别该参数,需升级到 MySQL Connector/J 8.0.28+
真正容易被忽略的是:DBeaver 不会主动刷新库列表,哪怕你刚被授了新库权限。必须右键连接 → “Disconnect” 再 “Connect”,或者点击工具栏的重连按钮,否则缓存的旧列表一直挂着。


















