tweeeetyのぶろぐ的めも

アウトプットが少なかったダメな自分をアウトプット<br>\(^o^)/

【mysql】mysql.sockの場所の確認とmysql_configの注意点

はじめに

mysql自体をいじる時というよりは、他の何かからmysqlにアクセスするときに
たまにmysql.sockの場所が知りたいことがあります。

そんなときのメモ

方法

  1. mysql_configで調べる
  2. show variablesでしらべる
  3. psコマンドで調べる
  4. mysql_configの注意点

1. mysql_configで調べる

これが一番簡単ですね

$ mysql_config --socket
/var/lib/mysql/mysql.sock

ただし、後述しますがmysql_configには注意が必要です。
4. mysql_configの注意点をみてみてください!

2. show variablesでしらべる

mysql> show variables like '%sock%';
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| socket        | /tmp/mysql.sock |
+---------------+-----------------+
1 row in set (0.00 sec)

3. psで調べる

psコマンドにauxfとかつけて調べます。
--socketというオプション指定している箇所が見るところです。
今回は--socket=/tmp/mysql.sockの部分。

$ ps auxf | grep mysql
root     17751  0.0  0.0 106224  1488 pts/2    S    18:27   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/exsample.ne.jp.pid
mysql    18136  0.1  3.9 915344 76612 pts/2    Sl   18:27   0:00  \_ /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/usr/local/mysql/data/exsample.ne.jp.err --pid-file=/usr/local/mysql/data/exsample.ne.jp.pid --socket=/tmp/mysql.sock --port=3306

4. mysql_configの注意点

1、2、3と見ていただくとsocketのパスが違います。
これはこういうことらしいです。

このmysql_config –socketの返す値は
デフォルトのソケット名で、MySQLのconfigure時に定義される。
参考 : MySQLのソケット場所変更、my.cnfでのsocket設定の注意点

本当か見てみる

気になるのでmysql_configコマンドの中身から見てみます。

$ cat /usr/bin/mysql_config
---- このへん ----
if [ -x /usr/bin/mysql_config-$bits ] ; then
    /usr/bin/mysql_config-$bits "$@"
else
-----------------

どうやら/usr/bin/mysql_config-$bitsというファイルをみてるぽいです。
自分のpcは64bitなのでmysql_config-64ですかね。

ということで/usr/bin/mysql_config-64もみてみます

$ cat /usr/bin/mysql_config-64 | grep sock
socket='/var/lib/mysql/mysql.sock'
        --socket         [$socket]
        --socket)  echo "$socket" ;;
#echo "socket: '"$socket"'"

確かにsocket='/var/lib/mysql/mysql.sock'で指定されてるのが確認できました。
mysql_configはここをみてたんですね。

おわり

4. mysql_configの注意点に書いたとおり、
socketの場所を変更した場合は注意が必要です。
そうじゃない場合は1のmysql_configmysqlを起動していなくても調べられます。

2と3は起動していないと調べられませんが、今動いているmysqlが使用しているsockという意味では目で見れて安心です。
ということでenjoy!