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