DBeaver的Ctrl+Shift+Enter执行全部语句极危险,因不校验光标位置、注释或DROP/DELETE等高危操作,生产环境误点可能瞬间删库清表,且默认无二次确认;需手动禁用该快捷键、启用脚本模式并配置连接级readOnly=true防护。

执行全部(Ctrl+Shift+Enter)为什么危险
DBeaver 的 Ctrl+Shift+Enter 会按顺序执行整个编辑器里的所有语句,不管光标在哪、有没有注释、是否包含 DROP TABLE 或 DELETE。一旦误点,尤其在生产连接下,可能瞬间清空表或删库——而 DBeaver 默认不弹二次确认。
禁用全局“执行全部”快捷键
这不是功能缺陷,而是设计选择:DBeaver 把“执行全部”当作高危操作,默认不设防。但你可以主动关掉它:
- 进入 编辑 → 偏好设置 → 用户界面 → 快捷键
- 搜索
Execute Script(对应动作名) - 选中后点击右侧
Unbind,或改绑定为一个极难误触的组合键(如Ctrl+Alt+Shift+Enter) - 点击
Apply and Close
注意:Execute Script 是 DBeaver 内部动作名,不是菜单文字;改完后 Ctrl+Shift+Enter 就彻底失效,只保留 Ctrl+Enter(执行当前语句)可用。
用脚本模式 + 分隔符控制执行粒度
默认 SQL 编辑器是“单语句模式”,但开启“脚本模式”后,DBeaver 才真正按分号切分并逐条执行——这反而能降低误执行风险,因为:
- 即使你点了“执行全部”,它也只执行以
;结尾的完整语句,不会把中间断行或注释当语句 - 若某条语句语法错误,后续语句自动跳过,不会像 JDBC raw batch 那样全盘失败
- 必须手动确保每条语句末尾有
;,强迫你检查边界
启用方式:右键编辑器 → 切换到脚本模式(或按 Ctrl+Alt+S),状态栏会显示 Script。
连接级防护:给生产连接加只读锁
最硬的保护不是靠手速,而是让误操作根本发不出写请求:
- 编辑生产数据库连接 → 进入 驱动属性 标签页
- 添加新属性:
readOnly=true(MySQL/PostgreSQL 支持)或defaultReadOnly=true(Oracle) - 保存并重连,此时所有
INSERT/UPDATE/DELETE/DROP会直接报错Connection is read-only - 需要写操作时,临时取消勾选该连接的
readOnly属性,再重连
这个配置不依赖 DBeaver 界面逻辑,是从 JDBC 层拦截,连 Ctrl+Enter 都拦得住。但要注意:某些数据库(如 Hive)的 readOnly 属性无效,得靠账号权限控制。
真正有效的批量执行保护,从来不是记住哪个快捷键,而是把“误执行”变成“执行不了”。分隔符、脚本模式、只读连接三者叠加上,比任何提示框都可靠。











