Navicat 无“高级特权”模块,完整备份依赖数据库原生权限:MySQL需SELECT+LOCK TABLES+SHOW VIEW+TRIGGER+EXECUTE;PostgreSQL推荐pg_read_all_data;SQL Server需db_owner或BACKUP DATABASE权限。
Navicat 没有“高级特权”这个功能模块
navicat 本身不提供叫“高级特权”的权限体系或备份开关——这是常见误解。它只是一个图形化客户端,所有备份操作依赖后端数据库自身的权限和能力(比如 mysql 的 select、lock tables、show view,或 postgresql 的 pg_read_all_data 角色)。所谓“完整备份”,实际取决于你连接时用的账号有没有足够权限去读取所有表、视图、存储过程等对象。
手动备份完整数据库必须满足的三个权限条件
缺一不可,否则备份中途失败或漏对象:
- MySQL 场景下,账号需具备
SELECT+LOCK TABLES+SHOW VIEW+TRIGGER权限;若含存储过程/函数,还需EXECUTE - PostgreSQL 场景下,账号至少要有
CONNECT到数据库 +USAGE在 schema 上 + 对每个表/视图/函数的SELECT权限;推荐直接赋予pg_read_all_data角色(9.6+) - SQL Server 场景下,账号需是
db_owner角色,或显式授予BACKUP DATABASE权限——仅db_datareader不够
“完整备份”在 Navicat 里实际对应哪几个操作选项
Navicat 的“转储 SQL 文件”和“备份数据库”是两条路径,行为差异很大,选错就白忙:
-
转储 SQL 文件(Export SQL File):生成可读 SQL 脚本,适合跨版本迁移;但默认不导出存储过程、事件、用户定义函数——必须手动勾选
Stored Procedures、Functions、Events、Triggers等复选框 -
备份数据库(Backup Database):调用数据库原生命令(如 MySQL 的
mysqldump、PostgreSQL 的pg_dump),生成二进制或自定义格式文件;速度更快、更可靠,但恢复必须用 Navicat 或对应命令行工具 - 注意:
Export to Excel或Export to CSV只导数据,不导结构,不算“完整备份”
容易被忽略的兼容性坑:字符集、时间类型、JSON 字段
即使权限全、选项全勾,备份仍可能静默损坏:
- MySQL 备份时若源库用
utf8mb4_0900_as_cs排序规则,而目标环境是 5.7 或旧版 Navicat,恢复会报错Unknown collation: 'utf8mb4_0900_as_cs'——得提前在导出设置里取消勾选Include character set - PostgreSQL 的
timestamp with time zone字段,在 Navicat 导出为 SQL 时可能丢失时区信息,建议改用pg_dump -F c格式备份 - MySQL 5.7+ 的 JSON 字段,如果 Navicat 版本低于 12.1,导出 SQL 会变成 BLOB,恢复后数据不可读










