I would like to analyze mysql
traffic. Right now, all mysql requests are sent to the MySQL unix socket:
unix 2 [ ACC ] STREAM LISTENING 3734388 15304/mysqld /var/run/mysqld/mysqld.sock
I'm trying to disable that socket to force MySQL to use the network socket instead on the loopback. I tried commenting out all the socket
directives in the my.cnf
and debian.cnf
files and restarted MySQL but it made no difference.
How can I disable the MySQL unix socket to force MySQL over the network?
additional info: I'm running MySQL 5.1
on ubuntu 10.04
.
Precisions on the question
Since plenty of people suggested enabling the network socket I would like to clarify my question by pointing out that the bind address was already enabled with bind-address = 127.0.0.1
and that a listening connection is available:
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 15601/mysqld
Still I see no connections attempt to 127.0.0.1:3306
coming from my webapp (Drupal website).
Updated with the answer
It appears indeed that the issue is coming from the mysqli
connector that Drupal uses (in .ht_config.php
for those who are interested). It was set: mysqli://drupal:***@localhost/drupal
, changing localhost
to 127.0.0.1
fixed the issue (i.e. Drupal is now making connections to the network socket).
Best Answer
In Linux and other *nixes, MySQL will assume you want to use a socket if you connect to the host "localhost" (which would be the default hostname).
You can override this in 3 ways: 1) Specify a different hostname like 127.0.0.1 (
mysql -h 127.0.0.1
) or your server's real hostname 2) Specify that you want to use TCP and not a socket (mysql --protocol tcp
)You can also easily make that the default my editing your my.cnf so it has this ([client] means any client:
You can see the full description of how MySQL decides how to connect here:
http://dev.mysql.com/doc/refman/5.5/en/connecting.html