Ubuntu
如何強制 MySQL 通過 TCP 而不是 Unix 套接字連接?
我想分析
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 網站)的連接嘗試。更新了答案
看來問題確實來自
mysqli
Drupal 使用的連接器(.ht_config.php
對於那些感興趣的人)。它已設置:mysqli://drupal:***@localhost/drupal
,更改localhost
為127.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 如何決定如何連接的完整描述: