下面一起來了解下PHP無法通過localhost成功連接MySQL怎么辦,相信大家看完肯定會(huì)受益匪淺,文字在精不在多,希望PHP無法通過localhost成功連接mysql怎么辦這篇短內(nèi)容是你想要的。
創(chuàng)新互聯(lián)公司"三網(wǎng)合一"的企業(yè)建站思路。企業(yè)可建設(shè)擁有電腦版、微信版、手機(jī)版的企業(yè)網(wǎng)站。實(shí)現(xiàn)跨屏營銷,產(chǎn)品發(fā)布一步更新,電腦網(wǎng)絡(luò)+移動(dòng)網(wǎng)絡(luò)一網(wǎng)打盡,滿足企業(yè)的營銷需求!創(chuàng)新互聯(lián)公司具備承接各種類型的成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)項(xiàng)目的能力。經(jīng)過10多年的努力的開拓,為不同行業(yè)的企事業(yè)單位提供了優(yōu)質(zhì)的服務(wù),并獲得了客戶的一致好評。
首先搞清楚mysql之連接localhost與127.0.0.1的區(qū)別:
127.0.0.1屬于TCP/IP連接,是通過網(wǎng)卡傳輸,依賴網(wǎng)卡,并受到網(wǎng)絡(luò)防火墻和網(wǎng)卡相關(guān)的限制。localhot屬于Unix socket方式連接,是不經(jīng)網(wǎng)卡傳輸!它不會(huì)解析成 IP,不受網(wǎng)絡(luò)防火墻和網(wǎng)卡相關(guān)的的限制,也不會(huì)占用網(wǎng)卡、網(wǎng)絡(luò)資源。一般設(shè)置程序時(shí)本地服務(wù)用localhost是最好的。
我的操作系統(tǒng)php使用127.0.0.1卻能連接mysql:
但無法通過localhost連接mysql:
嘗試phpmyadmin也遇到同樣的錯(cuò)誤,不過也出現(xiàn)比較有價(jià)值的錯(cuò)誤提示(套接字沒有正確設(shè)置):
這里說套接字指的是php跟mysql通信的一個(gè).sock文件。
分析一下問題:
我的mysql使用的是mariadb5.5,通過yum安裝,所以問題出在mysql本身的可能性幾乎沒有。
通過phpinfo查找socket關(guān)鍵字,可以發(fā)現(xiàn)mysql.default_socket沒有設(shè)置默認(rèn)值,而pdo_mysql給出了默認(rèn)值,sock的位置
編輯php.ini給予mysql.default_socket默認(rèn)路徑,并且跟mysql的套接字文件存放路徑對應(yīng)按理就能解決問題。不過還有個(gè)偷懶的辦法,把mysql的套接字文件在php指定的默認(rèn)路徑創(chuàng)建軟連接,就無需修改php.ini了。
查看mysql套接字路徑:
# cat /etc/my.cnf
創(chuàng)建軟連接:
# ln -s /var/lib/mysql/mysql.sock /tmp
問題解決:
看完P(guān)HP無法通過localhost成功連接mysql怎么辦這篇文章后,很多讀者朋友肯定會(huì)想要了解更多的相關(guān)內(nèi)容,如需獲取更多的行業(yè)信息,可以關(guān)注我們的行業(yè)資訊欄目。