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 来自哪里。谢谢。
在读取配置文件时,mysql
命令行客户端只读取[client]
和[mysql]
部分中找到的配置指令,而mysqldump
只使用[client]
和[mysqldump]
部分中找到的配置指令。
如果您的配置文件中的套接字指令在该[mysql]
部分而不是该[mysqldump]
部分,那么您应该将其移动到该[client]
部分,这应该可以解决您的问题。
那么/var/run/mysqld/mysqld.sock
从何而来呢?我非常清楚地记得,从前,我的头为了那个人反复撞墙。
事实证明,Ubuntu 从源代码编译他们的 MySQL 组件,当他们这样做时,他们编译它们以使用/var/run/mysqld/mysqld.sock
除非配置文件另有指定或套接字在命令行上被覆盖......所以如果你的socket
指令不在[client]
那个将是对这种行为的一种解释。