阶段一:连接与授权(连不上数据库)

错误代码

核心原因

解决方案 / 修复命令

2002

服务未启动
MySQL 进程没有运行。

重启 MySQL 容器:
sudo docker compose restart mysql

2003

端口被拦截
服务器防火墙未开放 3306 端口。

开放防火墙端口:
sudo ufw allow 3306

1045

密码错误
输入的密码与配置不符。

检查 MYSQL_ROOT_PASSWORD 环境变量或重新设置密码。

1130

无远程权限
用户未授权远程登录(Host 限制)。

执行授权命令:
GRANT ... TO 'user'@'%';

阶段二:SQL 操作与业务逻辑(连上了但操作报错)

错误代码

核心原因

解决方案 / 修复命令

1064

SQL 语法错误
语句写得不规范(如拼错 indentified)。

看报错提示的 near '...' 附近,检查拼写、标点或中文符号。

1146

数据表不存在
表名写错,或还没创建这张表。

检查当前数据库是否正确,核对表名拼写(SHOW TABLES;)。

1054

字段名不存在
列名写错了,或表里没这个字段。

仔细核对表结构(DESC 表名;),检查字段名拼写。

1062

主键/唯一键冲突
插入的数据在表中已存在(如重复ID)。

检查数据是否重复,或改用 INSERT IGNORE / REPLACE INTO

1044/1142

权限不足
当前登录用户没有操作该库/表的权限。

用 root 账号给当前用户执行 GRANT 授权,或检查是否登错账号。

1055

GROUP BY 严格模式报错
MySQL 5.7+ 的 GROUP BY 写法不严谨。

修改 SQL 语句使其符合规范,或关闭 ONLY_FULL_GROUP_BY 模式。

1205

锁等待超时
多条事务在抢同一批数据,导致死锁。

检查是否有长时间未提交的事务,优化业务逻辑减少长事务。

💡 职场老鸟的排错经验

  1. 连接排查顺序:遇到连不上的问题,建议按照 服务状态 -> 端口防火墙 -> 密码 -> 远程权限 的顺序依次排查,效率最高。

  2. 看懂报错信息:遇到报错千万别慌,MySQL 的报错非常直观。重点看报错提示里的 near '...'(定位语法错误位置)和错误代码后面的英文描述,90% 的问题都能靠“翻译报错信息”解决!