mysql登錄時報socket找不到的問題及解決
mysql登錄時報socket找不到
mysqld.socket文件是用來給客戶端和服務(wù)端進行通信的,如果通過源碼方式安裝,默認情況下這個文件會被放在tmp目錄下。
當然也可以手動指定存放位置,通過修改/etc/my.cnf文件的socket參數(shù)來修改mysqld.socket的存放路徑。
例如:
[mysqld] socket=/data/mysqldb/mysqld.sock
但是這樣一來在登錄的時候就會出現(xiàn)如下問題
[root@s186 /data/mysql]#/usr/local/mysql/bin/mysql -uroot -p Enter password: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
mysql客戶端在登錄的時候默認會去/tmp/mysql.sock這個目錄查找mysqld.socket文件,由于修改了路徑自然是找不到的。
可以通過修改/etc/my.cnf文件給客戶端指定位置。
添加如下配置:
[client] socket=/data/mysqldb/mysqld.sock
這樣客戶端在登錄時就會去指定的目錄查找mysqld.socket文件,
注意client的socket要和mysqld是一樣的,因為客戶端和服務(wù)端通信靠的就是這個文件,肯定要一致
通過上面的案例應(yīng)該明白為何服務(wù)端可以啟動,但是登錄的時候會報socket找不到的問題了。
出現(xiàn)socket找不到的問題大致有以下幾種情況
1.mysqld和client的socket配置路徑不一樣
比如像下面這樣的配置
[mysqld] socket=/data/mysqldb/mysqld.sock [client] socket=/data/mysqldb/mysql.sock
路徑是一樣的,但是文件名不一樣,一個是mysqld.socket,一個是mysql.socket
socket文件是由服務(wù)端生成的,而客戶端找的就是服務(wù)端生成的socket文件,所以client的配置要和mysqld一樣
2.在cmake的時候指定了路徑
比如像下面這一段cmake指令
在參數(shù)DMYSQL_UNIX_ADDR=/tmp/mysqld.sock中指定了socket的位置
那么/etc/my.cnf上mysqld上的socket和client上的socket都需要和這個一致
因為cmake在執(zhí)行完之后,mysqld這個執(zhí)行文件才會生成,并且這個執(zhí)行文件中會記錄你指定的參數(shù)
那么當執(zhí)行mysqld的時候,它就會在你指定的目錄下去查找
這個時候/etc/my.cnf下的mysqld和client的socket必須和指定的路徑保持一致
否則mysqld執(zhí)行都會失?。〞骳hange dir…這樣的錯誤)
cmake \-DCMAKE_INSTALL_PREFIX=/usr/local/mysql56 -DMYSQL_DATADIR=/data/mysqldb/data -DSYSCONFDIR=/etc/my.cnf -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/data/mysqld.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=utf8 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
解決方法
解決socket的核心就是在登錄的時候告訴客戶端socket文件的位置
要么通過/etc/my.cnf文件指定位置
要么就是在登錄的時候指定位置
像下面這樣:
mysql -uroot -p --socket=/data/mysqldb/mysqld.sock
還有一種方式就是創(chuàng)建軟連接,因為客戶端默認會到/tmp下找mysqld.socket文件
我不通過配置文件,在tmp下建一個軟連接就可以了
ln -s /data/mysqldb/mysqld.sock mysql.socket
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
mysql #1062 –Duplicate entry ''1'' for key ''PRIMARY''
Mysql進行數(shù)據(jù)備份,還原后進行回帖,出現(xiàn)以下錯誤代碼,其實主要是導(dǎo)入數(shù)據(jù)重復(fù)的問題,將現(xiàn)在的數(shù)據(jù)表清空,重新導(dǎo)入即可2012-07-07Mysql的max_allowed_packet設(shè)定
今天小編就為大家分享一篇關(guān)于Mysql的max_allowed_packet設(shè)定,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12mysql數(shù)據(jù)庫備份設(shè)置延時備份方法(mysql主從配置)
這篇文章主要介紹了mysql數(shù)據(jù)庫延時備份的方法,也就是mysql主從服務(wù)器備份,可以同步到多個服務(wù)器,最后我們提供了一個備份腳本,大家參考使用吧2013-12-12replace MYSQL字符替換函數(shù)sql語句分享(正則判斷)
最近更新網(wǎng)站發(fā)現(xiàn)一些字段的值不是預(yù)期的效果,需要替換下值,通過下面的sql語句,直接執(zhí)行就可以了2012-06-06MySQL使用MRG_MyISAM(MERGE)實現(xiàn)分表后查詢的示例
這篇文章主要介紹了MySQL使用MRG_MyISAM(MERGE)實現(xiàn)分表后查詢的示例,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下2020-12-12Servermanager啟動連接數(shù)據(jù)庫錯誤如何解決
這篇文章主要介紹了Servermanager啟動連接數(shù)據(jù)庫錯誤如何解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-10-10

運維角度淺談MySQL數(shù)據(jù)庫優(yōu)化(李振良)