Mysql
mysql 有效,mysqldump 無效
我的 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]
那個將是對這種行為的一種解釋。