MySQLにコマンドラインから接続しようと思ったら、あれ?つなげません。ってなりました。
複数のMySQLをインストールしていたり、ちょっと特殊な感じでインストールした場合には標準的な構成からずれるためにこういうことが起こるんだと思います。。
というわけで、その問題の発生と調査から解決方法までを、ドキュメンタリー形式?でお伝えします!!
MySQL接続エラー
エラー発生!
MySQLにつなごうと思ってコマンド打ったらエラーになっちゃいました。エラーコードは2002で、どうもソケット経由でつなげない的なメッセージ。
# mysql -u test -p ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
そして調査
というわけで、検索の度に出るわけですが、まず、そもそもmysql.sockというファイルが存在するのか?の確認をしました。
その結果、私の場合はそもそも/var/lib/mysqlというディレクトリ自体がありませんでした(笑)そりゃつながりませんね。
# ls /var/lib/mysql ls: cannot access /var/lib/mysql: No such file or directory
そういうわけで、今度は逆に、mysql.sockはどこにあるのか調べました。そしたら、案の定、別のところにありました。そりゃそうだよね。標準のインストールをしてないですから…
# find / -name mysql.sock /opt/.../mysql.sock
というわけで、これを使ってアクセスすれば接続できるはず!
ソケットを指定して接続
さて、このmysql.sockですが、未だに何なのかはよくわかってませんが、接続の時に使うソケットというものらしいです。接続情報でも入ってるんですかね?
で、このソケットを指定して、mysqlにアクセスする方法がきちんとありました。
# mysql --socket=/tmp/mysql.sock -u test -p Enter password: Welcome to the MySQL monitor. ・・・
「–socket=」というオプションを付ければいいんですねー。これで接続することができました!