程序操作不了MySQL,可能哪些原因?

科技   2024-11-15 18:30   上海  

要周末了,就写一篇基础一点的。

在开发或者维护MySQL的时候,我们有时候会遇到程序无法操作MySQL的情况。

这篇文章我们就介绍一些常见的报错以及解决办法,这些也是小编一 一模拟过的,比如故意构造网络不通的场景,或者把最大连接数改成2再模拟连接数跑满的情况。应该有一丢丢参考价值。

当然,MySQL老司机估计看到这些报错就知道什么问题,那文章就可以跳过啦,可以帮忙去留言区留下遇到过的其他报错。


报错一

A connection  attempt failed ……

这种情况一般就是网络或者端口不通。

可以尝试ping一下MySQL的IP地址。

如果不能通,需要确定网络是否打通,或者路由规则是否添加;

如果能通,那可以确定一下端口通不通。

执行:

telnet IP 3306

如果不能通,大概率是被防火墙挡了。

这种情况,MySQL服务端就需要开放3306端口给客户端,比如需要在服务端执行:

/sbin/iptables -A INPUT -s 192.168.12.12  -p tcp --dport 3306  -j ACCEPT

假设192.168.12.12是客户端IP。

还连不通的话,就得看看MySQL是不是挂了。


报错二

Error 1040: Too many connections

这个表示MySQL连接数超了。

解决办法:调整MySQL服务端最大连接数或者减少程序配置的连接数。


报错三

Error 1045 (28000): Access denied for  user ……

用户名或者密码不对,这里要注意一点,库不存在或者写错了也是这个报错。

解决办法:

修改程序里配置的用户名或者密码;

修改程序里库名或者创建对应的库。


报错四

Error 1142 (42000): …… command denied to  user ……

原因:

权限不足


解决办法:

增加对应的权限


报错五

Error 1146 (42S02): Table ……doesn't exist

原因:

表不存在或者写错了


解决办法:

程序配置中修改表名,如果没有对应的表,则在MySQL中创建对应的表。


最后,把常见的一些报错整理成了一张表:

程序操作MySQL常见的一些报错

可能的原因

解决办法

A connection  attempt failed ……

网络或端口不通

调通网络和端口

Error 1040: Too many connections

连接数超了

调整最大连接数限制

Error 1045 (28000): Access denied for  user ……

用户名或者密码不对

库不存在或者写错了

修改用户名或者密码

修改库名或者创建对应的库

Error 1142 (42000): …… command denied to  user ……

权限不足

增加权限

Error 1146 (42S02): Table ……doesn't exist

表不存在或者写错了

修改表名或者创建对应的表


公众号近期热点内容:

一文入门Go语言

MySQL主流高可用方案

数据库到底该不该容器化?

通过Otter同步MySQL数据

使用GO开发MySQL巡检系统

建议收藏:一份完整的数据库规范

MySQL主库扛不住了?来试试读写分离吧

单个mysqld_exporter监控多个MySQL实例

MySQL为什么不用Redo Log来进行主从复制?

揭秘近几年大厂DBA面试题类型分布,不是备份、优化排榜首

MySQL数据库联盟
关注后,回复“高可用”,可获取8篇MySQL高可用文章
 最新文章