MySQLのソケット場所変更、my.cnfでのsocket設定の注意点

先日、Mac ローカル環境の MySQL ソケット場所を変更したのですが、一つ不具合が発生したので追記のエントリーです。元記事のほうも修正しています。以下エントリーに対する追記となります。

Macローカル開発環境のMySQLソケットの場所を変更 | EasyRamble

スポンサーリンク

ターミナルからの MySQL ログインでソケットのエラー発生

当初、/etc/my.cnf の内容は以下の通り、mysqld の socket だけ指定していました。

これで問題なく Rails からは MySQL に接続できていたのですが、ターミナルから MySQL に接続しようとしたところエラー発生。

他の場所で、my.cnf が読み込まれてるのかなぁ?と考え、my.cnf の設置場所を調べる。

しかし、/etc/my.cnf 以外は存在しませんでした。

クライアントからのソケット場所を指定

引き続き色々調べたところ、どうやらクライアント側からのソケット場所も指定する必要があるらしい。

MySQL :: MySQL 4.1 リファレンスマニュアル :: A.4.5 MySQL ソケットファイル /tmp/mysql.sock の保護または変更方法
MySQL :: MySQL 4.1 リファレンスマニュアル :: A.2.3 Can’t connect to [local] MySQL server エラー

ということで、以下のように [client] のソケット場所の指定を my.cnf に追加しました。

MySQL 再起動。

MySQL にログイン。

これで、ターミナルから MySQL にログインできました。一応これで問題なく使用できています。

mysql_config –socket コマンドの注意点

ちなみに… mysql_config –socket コマンドで、mysql ソケットの場所を確認すると、変更前の /tmp/mysql.sock のままです。

調べたところ、この mysql_config –socket コマンドの返す値はデフォルトのソケット名で、MySQL の configure 時に定義されるそうです。

–socket

デフォルトのソケット名。MySQL をコンフィギャするときに定義される。

コンフィギャ‥って(笑。以下の mysql_config_editor を使うと、mysql_config –socket の値を編集できるそうなのだが…

MySQL :: MySQL 5.6 Reference Manual :: 4.6.6 mysql_config_editor — MySQL Configuration Utility
mysql – How to change value returned by ‘mysql_config –socket’? – Stack Overflow

とりあえず支障ないし、面倒くさいので私は mysql_config_editor は試してません。以上です。

スポンサーリンク
現場で使えるMySQLは長くお世話になっていて、MySQL触る人には必須の本。
スポンサーリンク
 
Twitterを使っていますのでフォローお願いたします!ブログの更新情報もつぶやいてます^^
(英語学習用)

Leave Your Message!