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 关闭防火墙