久しぶりにローカルのmysql使ったら動かなくなった
railsプロジェクトで久しぶりにlocalのmysql使ったらmysqlが動かなくなっていました。その解決手順を以下に記述します。
#とりあえず今あるmysqlを全部消す
データは消えてしまいますが、そのデータを作り直す時間を加味しても結果的にはmysqlを削除してしまったほうが早いです。古いmysqlが悪さしている場合、解決にかなり時間を取られてしまいますので。localのmysqlを辞めてdockerでmysqlを起動させて接続すればデータを残して解決するのですが、きっとこの記事の読者はlocalのmysqlを起動して接続したいはず...
- コミュニティエディションのmysqlを削除する方法
rm -rf ~/Library/PreferencePanes/My*
sudo rm /usr/local/mysql
sudo rm -rf /usr/local/mysql*
sudo rm -rf /Library/StartupItems/MySQLCOM
sudo rm -rf /Library/PreferencePanes/My*
sudo rm -rf /Library/Receipts/mysql*
sudo rm -rf /Library/Receipts/MySQL*
sudo rm -rf /private/var/db/receipts/*mysql*
sudo rm /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist
- brewで入れたmysqlを削除する方法
$ brew uninstall mysql
sudo rm -rf /usr/local/Cellar/mysql*
sudo rm -rf /usr/local/bin/mysql*
sudo rm -rf /usr/local/var/mysql*
sudo rm -rf /usr/local/etc/my.cnf
sudo rm -rf /usr/local/share/mysql*
sudo rm -rf /usr/local/opt/mysql*
sudo rm -rf /etc/my.cnf
上2つとも流しておけばmysqlは全部消えるはず。
brewでmysqlをinstall
今回はbrewを使ってmysqlをinstallします。現状、brew install mysql
をすると8系列のmysqlがinstallされてしまうので、無難に5.7をinstallします。
brew install mysql@5.7
pathを通すために以下の1行を自分が使っているシェルの設定ファイルに記載してください。 ( bashなら ~/.bash_profile )
export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"
※もし昔に設定していたmysqlのPATHがあったら削除しましょう。
mysql.server start
Starting MySQL
SUCCESS!
となればmysqlのinstallまで成功です。
過去に起動したRailsプロジェクトを動かす
以下はrailsのプロジェクトを動かすときのはまりポイント置いておきます。
過去にbundle installを実行したプロジェクトだと、その時入れてあったmysqlのversionに合わせてgemがinstallされていると思うので、rails db:createを実行すると以下のようなエラーが出てmysql周りが怒られているよ!というエラーが表示されると思います。
> rails db:create
rails aborted!
LoadError: dlopen
ですので以下のコマンドでgemをuninstallします。
bundle exec gem uninstall mysql2
して
bundle install
を実行してmysql2のgemを入れ直しましょう。
ここでエラーが出る人は
bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib"
bundle install前に上記コマンドを流してみてください。