Navicat 不提供云端数据加密功能,仅支持配置SSL/TLS连接、执行云数据库TDE命令及本地密码混淆存储;真正加密依赖云平台配置与应用层实现。
Navicat 本身不提供云端数据加密功能
navicat 是数据库客户端工具,不是云服务或加密网关。它不参与传输层加密之外的数据加解密流程,更不会对云端数据库中的字段内容做透明加密(tde)、列级加密或应用层加密。所谓“通过 navicat 开启云端数据加密”,本质是混淆了客户端操作与服务端安全机制。
真正起作用的是你连接的云数据库平台(如阿里云 RDS、腾讯云 CDB、AWS RDS、Azure SQL)本身是否启用加密能力,以及你的连接配置是否安全:
-
SSL/TLS连接必须开启,否则账号密码和查询内容明文传输 - 云平台是否启用
Transparent Data Encryption(TDE),这需要在控制台或 SQL 命令中配置,与 Navicat 无关 - 字段级加密(如 AES_ENCRYPT)需在应用逻辑或 SQL 中手动调用函数,Navicat 只负责执行语句
在 Navicat 中强制启用 SSL 连接(MySQL / PostgreSQL 场景)
这是你能用 Navicat 直接控制的最关键加密动作:防止中间人窃取连接凭据和敏感查询结果。
常见错误现象:Access denied for user 或连接后提示 SSL connection is required 却无法连上 —— 往往是因为没勾选 SSL 选项,或证书路径填错。
- 新建连接时,切换到 SSL 标签页
- 勾选
Use SSL,模式选Require(非Preferred) - 若云厂商要求验证证书(如阿里云 RDS),需填写
CA File路径(如/path/to/rds-bundle.pem),不能留空 - PostgreSQL 用户注意:
SSL Mode必须设为require或verify-full,disable或allow等同于裸奔
用 Navicat 执行 TDE 启用命令(仅限支持该功能的云数据库)
TDE 是数据库引擎层面的功能,Navicat 只是执行它的终端。能否开启、怎么开启,完全取决于你用的云数据库类型和版本。
例如阿里云 MySQL 8.0 高可用版支持 TDE,但必须通过控制台开启,SQL 不开放;而 SQL Server on Azure 则可通过 ALTER DATABASE SET ENCRYPTION ON 启用 —— 此时你才需要在 Navicat 中运行这条语句。
- 确认云平台文档是否允许 SQL 启用 TDE(多数公有云 MySQL 不允许,SQL Server / PostgreSQL 可能允许)
- 执行前确保当前用户有
CONTROL DATABASE权限(SQL Server)或ENCRYPTION_ADMIN(MySQL 8.4+) - 命令示例(SQL Server):
ALTER DATABASE [your_db] SET ENCRYPTION ON - 执行后需等待后台线程完成加密,期间不影响读写,但会增加 I/O 和 CPU 开销
别把 Navicat 的「密码保存」当成加密保护
很多人误以为 Navicat 加密保存了数据库密码,就等于“数据被保护了”。其实这只是本地客户端的密码混淆存储,和云端数据安全毫无关系。
更危险的是:一旦开启 Save password,且未设置 Navicat 主密码(Master Password),所有连接密码以可逆方式存于本地配置文件中,用任意文本编辑器就能看到明文或快速解出。
- 进入
File → Options → Security,务必启用Master Password - 禁用
Save password(推荐),改用操作系统凭证管理器或云平台的临时 Token 认证 - 如果必须保存密码,请确认
Master Password已设置且强度足够 —— 否则等于把钥匙挂门把手上
最常被忽略的一点:加密不是开关,而是链条。SSL 挡不住拖库,TDE 挡不住高权限账号导出,字段加密挡不住应用层漏洞。Navicat 做得再规范,也补不上云平台配置缺口或业务代码里的 SELECT * 泄露。










