Mac OS XをMavericksにアップグレードしたため、MySQLコマンドが「command not found」となる
ケース
Mac OS X(Mountain Lion)にインストール&設定済みのMySQLのコマンドが効かず、command not found
となってしまう。
$ mysql -bash: mysql: command not found
以前はSequel Proからの接続もできていたのだが、何故か接続できなくなっている。Mavericksへのアップグレードが原因か?
ググってみるとMavericksへのアップグレードにより、同じようにMySQLが消えてしまうケースがいくつか見られた。やはりアップグレードが原因のようだ。
- iMacをMavericksにしたらMySQLとか消えた(復旧メモ) | ぅゎょぅι゛ょっょぃ
- Mavericksにして死んだものと、蘇生方法 - Qiita
- 拝啓、mac mavericksにしてから開発環境が死んだみなさまへ… | TowardSomethingNew
残念ながら私のPCのシステム環境設定にはMySQLがいなかった・・・。
対処
mysqlのパスを調べたが、何も出力されず・・・。
$ which mysql
とりあえずHomebrewでインストールしていたはずなので、brewコマンドで確認する。
$ brew list mysql
やはりインストール済み。Homebrewでインストールしたパッケージは/usr/local/Cellar
配下に格納されるはずなので調べてみる。
$ ls /usr/local/Cellar mysql
解決方法
Homebrewでアンインストールし、再インストールすることにした。
$ brew uninstall mysql Uninstalling /usr/local/Cellar/mysql/5.6.20_1...
5.6.20_1は削除されたのだが、16と19が残ったままで、これはどうすればいいんだろう?
$ ls /usr/local/Cellar/mysql 5.6.16 5.6.19
MySQLをインストールする前に下記コマンドを実行。
$ brew update (省略) $ brew upgrade ==> Upgrading 2 outdated packages, with result: mysql 5.6.20_1, pyenv 20140924 ==> Upgrading mysql ==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/mysql-5.6.2 ######################################################################## 100.0% ==> Pouring mysql-5.6.20_1.mavericks.bottle.1.tar.gz ==> Caveats A "/etc/my.cnf" from another install may interfere with a Homebrew-built server starting up correctly. To connect: mysql -uroot To have launchd start mysql at login: ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents Then to load mysql now: launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist Or, if you don't want/need launchctl, you can just run: mysql.server start ==> Summary 🍺 /usr/local/Cellar/mysql/5.6.20_1: 9578 files, 338M (省略)
んん?ここでmysqlとpyenvがupgradeされている?
$ brew install mysql Warning: mysql-5.6.20_1 already installed $ mysql ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
ここで、MySQLがインストール済みというメッセージと、おなじみのCan't connect to local MySQL server through socket '/tmp/mysql.sock'
というメッセージが出力された。対処法は過去記事のとおりMySQLサーバを起動する。
$ mysql.server start Starting MySQL SUCCESS!
Sequel Proからも接続できた!
が、DBはあるもののテーブルの中身がないのか、接続できないテーブルもいくつかある。無事だったのは比較的最近にローカルのMySQLにインポートしたデータのみ。古いDBはデータの格納先が異なっていたのだろうか・・・?