無法爲 php_mysqli 指定 mysqli.default_socket 參數

mysqli_connect(): (HY000/2002): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)

先給出結論

此bug尚未找出解決方案,但我已使用了曲線救國的方案來救命


背景

  • 用了阿里雲市場中提供的鏡像;
  • localhosthost的話,php連接mysql時就會走socket的方式而非TCP/IP的方式。
  • 鏡像中提供的可視化運維繫統(PHP),似乎指定了mysql socket的路徑爲:/tmp/mysql.sock;因此,若我改 mysql的配置socket的話,則該可視化運維繫統不可用;
  • 該可視化運維繫統使用了zend的工具進行加密,無法修改;

調試過程

因此只能改自己PHP的配置mysqli.default_socket
備註:經測試,用php_mysql擴展的話,mysql.default_socket修改成功,並能成功連接。

而修改mysqli.default_socket的話,依然報上述的錯,也就是設置無效。
利用php_info查看了一下mysqli的配置,結果如下:

MYSQLI_SOCKET   /tmp/mysql.sock
mysqli.default_socket   no value

這裏可以看出倆問題:
- 似乎設置好了MYSQLI_SOCKET,但爲何未能設置成功mysqli.default_socket
- google了一下,別人都是說MYSQLI_SOCKET會覆蓋mysqli.default_socket,因此需要處理MYSQLI_SOCKET不正確的問題;那在我這,爲何MYSQLI_SOCKET沒有覆蓋mysqli.default_socket


最終結果

搞不定此socket的配置,只好換回用127.0.0.1來走TCP/IP
備註:用127.0.0.1的話,記得在mysql的配置文件my.cnf中把skip-name-resolve給註釋掉,否則會報以下這錯:

Host ‘127.0.0.1’ is not allowed to connect to this MySQL server

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章