Mysql

mysql 有效,mysqldump 無效

  • July 13, 2013

我的 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]那個將是對這種行為的一種解釋。

引用自:https://dba.stackexchange.com/questions/46296