Ubuntu

如何強制 MySQL 通過 TCP 而不是 Unix 套接字連接?

  • October 29, 2016

我想分析mysql流量。現在,所有 mysql 請求都發送到 MySQL unix 套接字:

unix  2      [ ACC ]     STREAM     LISTENING     3734388  15304/mysqld        /var/run/mysqld/mysqld.sock

我正在嘗試禁用該套接字以強制 MySQL 在環回上使用網路套接字。我嘗試註釋掉and文件socket中的所有指令並重新啟動 MySQL,但沒有任何區別。my.cnf``debian.cnf

如何禁用 MySQL unix 套接字以強制 MySQL 通過網路?

附加資訊:我正在MySQL 5.1執行ubuntu 10.04

問題的準確性

由於很多人建議啟用網路套接字,我想通過指出綁定地址已啟用bind-address = 127.0.0.1並且偵聽連接可用來澄清我的問題:

tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      15601/mysqld 

127.0.0.1:3306我仍然沒有看到來自我的 webapp(Drupal 網站)的連接嘗試。

更新了答案

看來問題確實來自mysqliDrupal 使用的連接器(.ht_config.php對於那些感興趣的人)。它已設置: mysqli://drupal:***@localhost/drupal,更改localhost127.0.0.1修復問題(即 Drupal 現在正在連接到網路套接字)。

在 Linux 和其他 *nixes 中,如果您連接到主機“localhost”(這將是預設主機名),MySQL 將假定您要使用套接字。

您可以通過 3 種方式覆蓋它:1) 指定不同的主機名,例如 127.0.0.1 ( mysql -h 127.0.0.1) 或伺服器的真實主機名 2) 指定您要使用 TCP 而不是套接字 ( mysql --protocol tcp)

您還可以輕鬆地將我編輯 my.cnf 的預設設置設為它(

$$ client $$指任何客戶:

[client]
protocol=tcp

您可以在此處查看 MySQL 如何決定如何連接的完整描述:

http://dev.mysql.com/doc/refman/5.5/en/connecting.html

引用自:https://serverfault.com/questions/337818