我的 ubuntu 12.04 服务器上有 mysql 5.5。这个命令:
mysql -u root -p
完美运行,但这给了我错误:
mysqldump -u root -p mydb_name > a.sql
mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) when trying to connect
在 my.cnf 文件中,套接字设置为:
socket = /home/mysql/mysql.sock
所以我不知道 /var/run/mysqld/mysqld.sock 来自哪里。谢谢。
读取配置文件时,
mysql
命令行客户端仅读取 and 部分中的[client]
配置指令[mysql]
,而mysqldump
仅使用 and 部分中的配置[client]
指令[mysqldump]
。如果配置文件中的套接字指令在该
[mysql]
部分而不是该[mysqldump]
部分,那么您应该将其移动到该[client]
部分,这应该可以解决您的问题。那么
/var/run/mysqld/mysqld.sock
从哪里来呢?我清楚地记得,曾几何时,我的头在墙上反复敲打。事实证明,Ubuntu 从源代码编译他们的 MySQL 组件,当他们这样做时,他们编译它们以使用
/var/run/mysqld/mysqld.sock
,除非配置文件另有规定或在命令行上覆盖套接字......所以如果你的socket
指令不在[client]
那个将是对这种行为的一种解释。