Mysql报错合集--链接报错(下)

December 09, 2023
测试
测试
测试
测试
3 分钟阅读

ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)

一种情况 mysql没启动 第二种 mysql连接默认为必须sock登陆,所以登陆需要添加–socket=xxx,或者更改/etc/my.cnf

Too many connections

这是因为mysql链接数太多了,使用mysql客户端命令或者图形化链接,一个就是一个链接数,如果有程序链接后没有关闭链接(close),将会导致占用一个连接数,大量的话将会沾满。不过会保留1个链接用于root登陆

用root登陆mysql后用如下命令查看,可以看到Command哪里有大量sleep,并且翻到最后,可以看到链接数有200多,已经满了。 show processlist

添加描述

这种情况下,全是sleep(没有任何操作,但是占用一个链接),那就在my.cnf中添加如下,设置链接10秒没有动作将清理掉。

wait_timeout=10

如果不是大量sleep,而是正常的Query,那就证明连接数不够了

添加描述

在my.cnf中添加如下,扩大链接数,不过最大也就1.6万多

max_connections=10000

Starting MySQL… ERROR! The server quit without updating PID file (/ops/logs/mysql/mysql.pid).

问题: 描述是mysql在没更新pid文件的情况下异常退出。意思是mysql异常退出了,并没有启动进程

查看日志发现如下:

130216 16:11:33 [ERROR] Can't start server: Bind on TCP/IP port: Cannot assign requested address130216 16:11:33 [ERROR] Do you already have another mysqld server running on port: 3306 ?130216 16:11:33 [ERROR] Aborting

意思是3306端口被占用,你可以netstat -unltp | grep :3306查看是否被占用。

如果没有呗占用,可以netstat -anptu | grep :3306,一把可以看到有进程还在使用3306端口链接中,这个应该是一个长链接,一直不释放

添加描述

可以看到后面显示时一个java程序再链接3306端口。pid号为12461,那就ps -aux | grep 12461,终止这个程序,不终止无法释放

停止程序后,过一会再netstat -anptu | grep :3306,就可以看到端口释放了,再启动mysql就行了

远程连接ERROR 2003 (HY000)

ERROR 2003 (HY000): Can’t connect to MySQL server on ‘192.168.xxx.xxx’ (113)

解答: 1.需要开放mysql为0.0.0.0,然后建立可远程账号%

2.查看/etc/my.cnf 注释bind_address=127.0.0.1或者skip_networking

3. systemctl disable firewalld 开机不自启 systemctl stop firewalld 关闭防火墙

继续阅读

更多来自我们博客的帖子

如何安装 BuddyPress
由 测试 December 17, 2023
经过差不多一年的开发,BuddyPress 这个基于 WordPress Mu 的 SNS 插件正式版终于发布了。BuddyPress...
阅读更多
Filter如何工作
由 测试 December 17, 2023
在 web.xml...
阅读更多
如何理解CGAffineTransform
由 测试 December 17, 2023
CGAffineTransform A structure for holding an affine transformation matrix. ...
阅读更多