[2002] MySQL套接字错误的原因和补救措施
你好。我叫 Goto,来自网络系统部门。
当从MySQL客户端软件(mysql、PHP、Perl等)连接到MySQL服务器时,
- 套接字'/tmp/mysql.sock '
- 没有这样的文件或目录(尝试通过unix连接: ///tmp/mysql.sock )
由于此类错误,您可能无法连接。
这意味着
“无法通过套接字 /tmp/mysql.sock 连接到本地 MySQL 服务器。” (我刚刚翻译的)
套接字是Unix域套接字(文件系统套接字),在本地系统内部通信时,
服务器和客户端之间通过该文件的输入和输出进行通信。
这是一个中间人的角色。
现在,我想解释一下此类错误的原因以及如何处理它们。
原因1.MySQL服务器未启动
1 | $ ps aux | mysqld |
检查进程是否存在。
如果没有,请启动它。
1 | $ sudo /etc/init .d /mysqld 状态 |
原因2、MySQL服务器使用的Unix套接字和客户端软件使用的Unix套接字路径不同。
没有这样的文件或目录(尝试通过 unix:///tmp/mysql.sock 连接)
例如,上面的错误表明客户端引用的是/tmp/mysql.sock,但
MySQL服务器引用的是/var/lib/mysql/mysql.sock。
这种情况有两种解决方案。
解决方案 A. 协调客户
参考MySQL配置文件/etc/my.cnf,
1 | [mysqld]套接字= /var/lib/mysql/mysql .sock |
既然路径是这样写的,那么只需将客户端软件的socket设置为同一个路径即可。
方案B.匹配MySQL
让我们重写/etc/my.cnf,如下所示。
1 | [mysqld] socket=与客户端相同的套接字路径 [client] soket=与客户端相同的套接字路径 [shell] 重写后,重新启动MySQL。 [shell]$ sudo /etc/init .d /mysqld restart |
原因3.本来就没有socket文件。
也有两种方法可以解决这个问题。
解决方案A. 重新启动MySQL服务器即可恢复。
(*重新启动服务器,而不是mysql。)
1 | $ sudo shutdown -r 现在 |
解决方案 B. 创建套接字文件
检查/etc/my.cnf并检查路径后,
1 | $ touch /path/mysql .sock $ chown mysql:mysql /path/mysql .sock |
在该路径上创建一个套接字并重新启动 MySQL。
1 | $ sudo /etc/init .d /mysql restart |
以上是MySQL 2002错误的原因和解决方法。
如果您觉得这篇文章有帮助,请点赞!