Navicat for Mac 启动崩溃主因是dyld动态库加载失败、签名失效、HiDPI渲染阻塞或MySQL 8认证插件不兼容;需分别用otool查依赖、codesign重签名、禁用NSHighResolutionCapable、升级至Navicat 16.0.12+解决。
Navicat for Mac 启动直接崩溃,报 dyld: Library not loaded
这是 macos 上 navicat 闪退最典型的信号——动态链接库加载失败。常见于升级 macos(尤其是 sonoma 或 sequoia)后,或手动替换过 libcrypto.dylib / libssl.dylib 等依赖库。
根本原因不是 Navicat 本身坏了,而是它打包的旧版 OpenSSL 库和系统新签名策略/路径规则冲突。macOS 不再允许从非标准路径(比如 /usr/local/lib)隐式加载未公证的 dylib。
- 别急着重装,先终端跑:
otool -L /Applications/Navicat\ Premium.app/Contents/MacOS/Navicat,看输出里有没有红色路径(如@rpath/libcrypto.1.0.0.dylib或指向/usr/local/的条目) - 如果看到
not found,说明运行时找不到对应 dylib;如果看到路径存在但加载失败,大概率是签名或权限问题 - 临时绕过:在终端用
DYLD_LIBRARY_PATH指向你本地编译好的兼容版 OpenSSL(不推荐长期用,会干扰其他工具)
用 codesign 修复签名失败导致的启动拒绝
macOS Gatekeeper 在启动时会校验二进制完整性。Navicat 被修改过(比如 patch 过)、或从非 App Store 渠道下载后未经重新签名,就可能触发 App can’t be opened because Apple cannot check it for malicious software 或静默退出。
关键不是“跳过验证”,而是让签名恢复有效且被系统信任:
- 先确认是否被篡改:
codesign --verify --deep --strict /Applications/Navicat\ Premium.app,出错就说明签名链断了 - 用开发者证书重签名(需有 Apple Developer 账号):
codesign --force --sign "Developer ID Application: XXX" --timestamp --options=runtime /Applications/Navicat\ Premium.app - 没证书?至少清理残留签名:
xattr -rd com.apple.quarantine /Applications/Navicat\ Premium.app,再右键“打开”绕过首次警告
Navicat 16+ 在 macOS 14+ 上卡在启动动画不动
这不是卡死,是界面线程被阻塞在字体渲染或高 DPI 缩放初始化阶段。尤其出现在外接 4K 显示器 + 默认缩放设为“更多空间”时。
Navicat 内部用的是较老的 Qt 5.12,对 macOS 原生 HiDPI 支持不完整,容易在 NSApplicationMain 后 hang 住:
- 临时解决:终端启动并禁用高 DPI:
QT_SCALE_FACTOR=1 /Applications/Navicat\ Premium.app/Contents/MacOS/Navicat - 更稳的方式:在
Info.plist里加键值对:NSHighResolutionCapable→NO(路径:/Applications/Navicat Premium.app/Contents/Info.plist) - 注意别用文本编辑器直接改 plist,用
plutil命令:先plutil -convert xml1 Info.plist,改完再plutil -convert binary1 Info.plist
升级 Navicat 后连接 MySQL 8 报 Authentication plugin 'caching_sha2_password' cannot be loaded
这不是 Navicat 启动问题,但常被误认为“闪退”——实际是首次连接数据库时弹窗报错后自动退出。Navicat 15 及更早版本默认不带 caching_sha2_password 认证插件支持。
MySQL 8.0.4+ 默认用这个插件,而 Navicat 没法像命令行 mysql 那样自动 fallback:
- 服务端临时降级(仅开发环境):
ALTER USER 'your_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; FLUSH PRIVILEGES; - 客户端侧升级:必须用 Navicat 16.0.12+(含 OpenSSL 1.1.1+ 和完整认证插件链)
- 别信网上改
libmysqlclient.dylib的方案——Navicat 自带私有版本,换外部库会导致 TLS 握手失败或崩溃
真正麻烦的是混合环境:既有老 Navicat 又不能改 DB 用户。这时候只能靠中间层,比如用 mysql -h 127.0.0.1 -P 3307 起个代理转发到真实 3306,并把认证方式转成兼容的——但这就超出 Navicat 本身范畴了。











