Navicat 15 查看执行计划提示“权限不足”主因是数据库服务端拒绝:SQL Server 缺 SHOWPLAN 权限(报错 Msg 262),MySQL 需 PROCESS+SELECT,PostgreSQL 需 pg_read_all_data 或 track_activities=on;Navicat 15 无容错降级机制,权限稍缺即报错,不尝试 fallback。

Navicat 15 查看执行计划提示“权限不足”,基本不是 Navicat 自身问题,而是数据库服务端明确拒绝了计划生成请求——最常见原因是用户缺少 SHOWPLAN(SQL Server)或 PROCESS/SELECT(MySQL/PostgreSQL)等底层权限。
SQL Server 报错 Msg 262: SHOWPLAN permission denied
这是典型权限缺失信号。SQL Server 不像 MySQL 那样靠用户能否执行 EXPLAIN 来控制,而是用独立的 SHOWPLAN 权限开关。
- 必须由 DBA 执行:
GRANT SHOWPLAN TO [your_user];仅db_owner或sysadmin角色默认拥有该权限 - 检查当前用户角色:
SELECT IS_MEMBER('db_owner'), IS_SRVROLEMEMBER('sysadmin') - 如果连接的是只读副本(如 AlwaysOn secondary),
SHOWPLAN权限默认被禁用,无法绕过 - Navicat 15 对 SQL Server 的权限校验较严格,即使你用 SSMS 能看到图形计划,Navicat 仍可能因协议解析差异报错
MySQL / PostgreSQL 显示 “Access denied; you need … privilege”
MySQL 和 PostgreSQL 的执行计划依赖会话级权限和系统变量,Navicat 15 默认发 EXPLAIN FORMAT=JSON 或 EXPLAIN (ANALYZE, BUFFERS),这些命令触发更深层的权限检查。
- MySQL:需
PROCESS权限(用于查看执行细节)+SELECT(用于访问表元数据);若用EXPLAIN ANALYZE,还需SUPER或SYSTEM_VARIABLES_ADMIN(MySQL 8.0.16+) - PostgreSQL:需
pg_read_all_data(14+)或至少对目标表有SELECT,且track_activities、track_counts必须为on(在postgresql.conf中设置并重启) - Navicat 15 不会自动降级命令格式 —— 如果你连的是低权限账号,它不会改发
EXPLAIN FORMAT=TRADITIONAL,而是直接报错
Navicat 15 自身配置放大了权限敏感度
相比 Navicat 17+,15 版本在执行计划流程中缺少容错降级机制,稍有权限缺口就中断,不尝试 fallback。
- 首选项 → 查询 → 勾选了
Use legacy explain format:这会让 Navicat 强制用旧协议,但某些新版 MySQL/PostgreSQL 已废弃对应接口,反而触发权限校验失败 - 连接属性里启用了“查询分析器”但未勾选“启用性能统计”:部分场景下 Navicat 会额外请求
performance_schema表权限,而该库默认仅root可读 - 右键菜单用
Explain Selected比工具栏按钮更稳妥:后者可能误读编辑区上下文(比如光标停在注释行),导致 Navicat 尝试对空语句发权限请求
真正卡住的地方往往不在 Navicat 界面按钮上,而在数据库服务端返回的权限元信息是否被完整传递 —— Navicat 15 解析这类错误响应的能力偏弱,容易把“缺少 PROCESS 权限”和“无法连接 performance_schema”都笼统显示为“权限不足”。验证前,先在命令行用同个账号执行 EXPLAIN SELECT 1,看真实报错内容,再反推缺哪条 GRANT。











