mysql 有效,mysqldump 无效

Ali*_*iBZ 5 mysql mysqldump ubuntu

我的 ubuntu 12.04 服务器上有 mysql 5.5。这个命令:

mysql -u root -p
Run Code Online (Sandbox Code Playgroud)

工作完美,但这给了我错误:

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
Run Code Online (Sandbox Code Playgroud)

在 my.cnf 文件中,套接字设置为:

socket = /home/mysql/mysql.sock
Run Code Online (Sandbox Code Playgroud)

所以我不知道 /var/run/mysqld/mysqld.sock 来自哪里。谢谢。

Mic*_*bot 9

在读取配置文件时,mysql命令行客户端只读取[client][mysql]部分中找到的配置指令,而mysqldump只使用[client][mysqldump]部分中找到的配置指令。

如果您的配置文件中的套接字指令在该[mysql]部分而不是该[mysqldump]部分,那么您应该将其移动到该[client]部分,这应该可以解决您的问题。

那么/var/run/mysqld/mysqld.sock从何而来呢?我非常清楚地记得,从前,我的头为了那个人反复撞墙。

事实证明,Ubuntu 从源代码编译他们的 MySQL 组件,当他们这样做时,他们编译它们以使用/var/run/mysqld/mysqld.sock除非配置文件另有指定或套接字在命令行上被覆盖......所以如果你的socket指令不在[client]那个将是对这种行为的一种解释。