navicat 连接 mysql 报“table performance_schema 不存在”本质是系统库未初始化或升级后未执行升级命令;需根据 mysql 版本运行 mysql_upgrade(≤8.0.15)或 mysqld --upgrade=force(≥8.0.16),并重启服务,再验证权限与认证插件兼容性。
navicat 连接 mysql 时提示 table performance_schema 不存在,本质不是 navicat 的问题,而是 mysql 系统库未正确初始化或版本升级后未执行系统表升级 —— 必须运行 mysql_upgrade(mysql 8.0.16 之前)或 mysqld --upgrade=force(mysql 8.0.16+)来重建 performance_schema、information_schema 等系统库结构。
为什么 performance_schema 会“不存在”
MySQL 升级(尤其是跨大版本,如 5.7 → 8.0)后,mysql、performance_schema、sys 这些系统库的表结构可能已变更,但旧数据目录中的物理文件没更新,导致服务启动后这些库虽存在,内部表缺失或元数据不匹配。Navicat 在连接时尝试查询 performance_schema 下的视图(比如用于显示会话状态、锁信息等),就会报 Table 'performance_schema.xxx' doesn't exist。
- 常见触发场景:手动替换
bin目录升级 MySQL、用旧数据目录启动新版本 mysqld、Docker 中挂载了老版/var/lib/mysql但镜像已是 8.0+ - 注意:
SHOW DATABASES能看到performance_schema,不代表它可正常访问;它是个内存引擎虚拟库,依赖初始化脚本生成表定义 - MySQL 8.0.16 起废弃
mysql_upgrade,改由 mysqld 启动时自动处理,但若跳过或失败,仍需强制触发
MySQL 5.7 及更早版本:必须运行 mysql_upgrade
该命令会检查并更新所有系统库结构,包括创建缺失的 performance_schema 表、修复 mysql 权限表字段、升级 sys 视图定义等。
- 确保 MySQL 服务正在运行:
sudo systemctl start mysqld(或对应服务名) - 用 root 用户执行:
mysql_upgrade -u root -p,输入密码后等待完成(通常几秒到一分钟) - 执行完必须重启 MySQL:
sudo systemctl restart mysqld,否则变更不生效 - 如果提示
Command 'mysql_upgrade' not found,说明 MySQL 客户端包未安装(如 Ubuntu 需apt install mysql-client)
MySQL 8.0.16 及以上:用 mysqld --upgrade=FORCE 替代
新版不再依赖外部工具,而是由 mysqld 自身完成升级逻辑。直接启动时加参数即可,无需先启服务再运行命令。
- 先停止 MySQL:
sudo systemctl stop mysqld - 执行升级命令(注意路径要对):
/usr/sbin/mysqld --upgrade=FORCE --user=mysql --datadir=/var/lib/mysql(--datadir必须与配置中一致) - 成功输出类似
Upgrade process completed successfully后,再正常启动:sudo systemctl start mysqld - 若卡住或报错
Can't open the mysql.plugin table,说明mysql库本身损坏,需先用--initialize-insecure初始化再恢复数据(慎用)
验证是否修复 & Navicat 连接前必查项
别急着开 Navicat,先在命令行确认系统库可用:
- 连上 MySQL:
mysql -u root -p - 运行:
USE performance_schema;→ 不报错即库存在 - 查一张关键表:
SELECT COUNT(*) FROM setup_actors;(应返回非空结果) - 检查 Navicat 使用的用户是否有
SELECT权限(尤其对performance_schema):GRANT SELECT ON performance_schema.* TO 'your_user'@'%'; FLUSH PRIVILEGES; - 如果用的是 MySQL 8.0+ 默认认证插件
caching_sha2_password,Navicat 旧版本(≤15.0.24)不支持,需降级插件或升级 Navicat
真正容易被忽略的是权限和认证插件这两层 —— 即使 performance_schema 已修复,用户无权查或驱动不认新插件,Navicat 依然会报各种“表不存在”“访问被拒绝”的混淆错误。











