まえがき
PHPの勉強をするために、Mac用のXAMPPをインストールして
ターミナルからMySQLに接続しようとしたら詰まったので原因とその解決方法について備忘をかねて記録しておく。
根本原因
MySQL接続時に、XAMPPで用意されてるコマンドが実行されてるかと思ったら
homebrewでインストールしたmysql-clientが実行されていた。
解決方法
.zshrc内に記述している環境変数$PATHの設定値を見直して
XAMPP側で提供してるコマンドが実行されるように設定した。
事前にパスのチェックはちゃんとしましょうと反省。
解決までにやったこと
※ここからは解決までに自分がやったことを殴り書きしてるので、同じような事象に悩まされてる方は
読んでみてもらえればいいかなと思います。
ターミナルからXAMPPで起動してるMySQLに接続しようとしたら
エラー1
Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
mysql.sockがないと言われたから作成して、DBサーバーをXAMPPから再起動して
再度接続を試みる。
エラー2
mysqladmin: connect to server at 'localhost' failed error: 'can't connect to local mysql server through socket '/tmp/mysql.sock' (38)'
また接続できないと返ってくる。
(38)はmysql.sockが配置されているディレクトリに対してアクセス権限がないときに
発生するエラーとのことなので、アクセス権限を修正してみた。
参考記事
https://feeld-uni.com/?p=314
しかし、それでも同じエラーが返ってきた。
XAMPPでMySQLの設定ファイルを開いて、sockのパスを変更してみた。
そして再度接続してみるもののまた(38)のエラーが返ってくる。
そしてパスを変えたはずなのに、返ってきたエラーに表示されてるパスが変わってないので
何かおかしいことに気づく。
.zshrcの$PATHにXAMPPのbinまでのパスを追加したのにうまくいってないので
環境変数$PATHを見直してみた。
そしたら、いつだかhomebrewでインストールしたmysql-clientが
$PATHの先頭に記述されてる・・・
XAMPPのbinを先頭に持ってきて、.zshrcを読み込み直し
サーバーも再起動して再チャレンジ!
うまくいった!!