mysql -uroot ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
這是mysql登陸時找不到套接字的問題。mysql
首先須要明白的是,Linux端的mysql server啓動時會開啓一個socket,Linux上的MySQL的客戶端在不使用IP鏈接時mysql server時,默認也會經過套接字來連接mysql server。sql
1.mysql server的套接字文件。socket
若是不手動配置my.cnf,那麼默認的socket通常是DATADIR/mysql.sock
,而DATADIR
若是沒有手動修改,通常默認是/var/lib/mysql目錄。不一樣的mysql版本,可能socket的默認路徑是/tmp/mysql.sock。命令行
例如我將socket路徑修改成/data/mysql.sock
。code
2.客戶端鏈接時使用的套接字文件。server
在Linux上的各類mysql類客戶端(例如mysql,mysqladmin,mysqldump,mysqlimport等)鏈接mysql server時,若是指定的主機名是'localhost',則會使用套接字來鏈接mysql server。所以,必須爲這些客戶端指定正確的套接字。mysqli
方法一:在鏈接命令行上使用"-S"選項指定import
mysqladmin -S /data/mysql.sock mysql -S /data/mysql.sock mysqldump -S /data/mysql.sock
方法二:在配置文件中指定
例如在my.cnf中:登錄
[client] socket=/data/mysql.sock
client段的配置表示任何客戶端鏈接mysql server時都使用該段配置。所以,這樣配置後,不管是mysql、mysqldump、mysqladmin仍是其餘的客戶端都會使用socket=/data/mysql.sock
進行鏈接。cli
除了使用[client]
指定全局客戶端的鏈接參數,還能夠爲特定的客戶端指定鏈接參數。例以下面爲mysql、mysqldump、mysqladmin這3個客戶端分別指定socket鏈接參數。
[mysql] socket=/data/mysql.sock [mysqldump] socket=/data/mysql.sock [mysqladmin] socket=/data/mysql.sock
注意:若是使用IP,例如mysql -uroot -h'192.168.100.10'
則表示使用TCP/IP協議鏈接mysql,這時不會使用套接字,就沒有套接字找不到的問題。