要周末了,就写一篇基础一点的。
在开发或者维护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中创建对应的表。
最后,把常见的一些报错整理成了一张表:
公众号近期热点内容: