Mac os 解決無(wú)法使用localhost連接mysql問(wèn)題
今天在mac上搭建好了php的環(huán)境,把先前在window、linux下運(yùn)行良好的程序放在mac上,居然出現(xiàn)訪問(wèn)不了數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)連接的host用的是localhost,可以確認(rèn)數(shù)據(jù)庫(kù)配置是正確的,因?yàn)樵趈ava中使用localhost訪問(wèn)正常,另外通過(guò)命令行工具也能正常訪問(wèn)。當(dāng)把localhost換成127.0.0.1或者本機(jī)的IP時(shí),居然正常了。以前一直認(rèn)為localhost與127.0.0.1是一回事,現(xiàn)在事實(shí)證明它們其中還是有區(qū)別的。
在網(wǎng)上搜索了一下它們的區(qū)別,有人已經(jīng)說(shuō)的很明白了,具體可以參看:http://www.dbjr.com.cn/article/50422.htm。它們的主要區(qū)別是localhost是通過(guò)socket方式來(lái)連接,而127.0.0.1則是走的TCP協(xié)議。
上面提到區(qū)別就是導(dǎo)致mac下無(wú)法連接數(shù)據(jù)庫(kù)的原因。那為什么socket方式無(wú)法連接呢?由于mac os lion上已經(jīng)自帶了apache和php,我的環(huán)境使用就使用默認(rèn)的,mysql服務(wù)是在官網(wǎng)下載dmg安裝最近版本,php的配置文件(/ect/php.ini)中設(shè)置有三個(gè)地方(mysql.default_socket、mysqli.default_socket、pdo_mysql.default_socket)設(shè)置了mysql socket文件存放的位置,其默認(rèn)值為/var/mysql/mysql.sock。查看mysql服務(wù)使用的socket文件有兩種方式
方法1:
echo "show variables" | mysql | grep "socket"
方法二:
echo "status" | mysql | grep "socket"
注意:如果mysql設(shè)置了密碼,使用-u,-p來(lái)指定用戶名和密碼
這里看到mysql的socket文件存放位置為/tmp/mysql.sock。
看到這兒應(yīng)該知道問(wèn)題所在了吧,使用localhost連接失敗的原因?yàn)樵趕ocket的方式下,php默認(rèn)配置的mysql服務(wù)的socket文件不存在,所以導(dǎo)致連接失敗,如果把連接失敗的錯(cuò)誤信息dump出來(lái),你應(yīng)該會(huì)看到錯(cuò)誤信息中包含了“No such file or directory”。
知道原因就容易修改了,只需要把php配置文件中mysql.default_socket、mysqli.default_socket、pdo_mysql.default_socket這三項(xiàng)值修改為mysql服務(wù)配置對(duì)應(yīng)值即可,修改好后需要重啟apache服務(wù)。當(dāng)然也可以修改mysql配置文件中的socket信息,使其保持一致即可,修改好后重啟mysql服務(wù)。
- MySQL數(shù)據(jù)庫(kù)遠(yuǎn)程連接開(kāi)啟方法
- MySQL遠(yuǎn)程連接丟失問(wèn)題解決方法(Lost connection to MySQL server)
- 配置mysql允許遠(yuǎn)程連接的方法
- MySQL遠(yuǎn)程連接不上的解決方法
- PHP中使用localhost連接Mysql不成功的解決方法
- 解決MySQL無(wú)法遠(yuǎn)程連接的方法
- MySQL出現(xiàn)SQL Error (2013)連接錯(cuò)誤的解決方法
- KB967723造成MySQL頻繁無(wú)法連接
- mysql服務(wù)啟動(dòng)卻連接不上的解決方法
- mysql server 5.5連接不上的解決方法
相關(guān)文章
在Mysql上創(chuàng)建數(shù)據(jù)表實(shí)例代碼
這篇文章主要介紹了如何在Mysql上創(chuàng)建數(shù)據(jù)表,需要的朋友可以參考下2014-03-03Mysql中in和exists的區(qū)別?&?not?in、not?exists、left?join的相互轉(zhuǎn)換問(wèn)題
這篇文章主要介紹了Mysql中in和exists的區(qū)別?&?not?in、not?exists、left?join的相互轉(zhuǎn)換,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-09-09有關(guān)mysql中sql的執(zhí)行順序的小問(wèn)題
在MySQL中我們可能會(huì)遇到一些關(guān)于執(zhí)行順序的問(wèn)題,下面小編就來(lái)帶大家了解一下原因以及如何解決2019-05-05一文搞懂MySQL XA如何實(shí)現(xiàn)分布式事務(wù)
MySQL如何實(shí)現(xiàn)多個(gè)MySQL數(shù)據(jù)庫(kù)更新的一致性呢?那就是MySQL XA,本文就來(lái)介紹一下MySQL XA如何實(shí)現(xiàn)分布式事務(wù),具有一定的參考價(jià)值,感興趣的可以了解一下2021-11-11MySQL表的創(chuàng)建及字段介紹(小白入門(mén)篇)
這篇文章主要為大家介紹了MySQL表的創(chuàng)建及字段介紹(小白入門(mén)篇),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05MySQL中關(guān)于null值的一個(gè)小問(wèn)題
這篇文章主要介紹了MySQL中關(guān)于null值的一個(gè)小問(wèn)題,幫助大家更好的理解和學(xué)習(xí)使用MySQL,感興趣的朋友可以了解下2021-03-03Node.js下向MySQL數(shù)據(jù)庫(kù)插入批量數(shù)據(jù)的方法
這篇文章主要介紹了Node.js下向MySQL數(shù)據(jù)庫(kù)插入批量數(shù)據(jù)的實(shí)現(xiàn)方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-10-10