MySQL 8.xをインストールしてmysql2のgemをインストールするまで

## MySQL 8.xをhomebrewでインストール

localでmariadbを使っていたんですが、mysqlで乗り換えました。
homebrewでmariadbをuninstallしてmysqlをinstallしましたが、mysql.sock関連エラーやmy.cnfファイルがないなどエラーが頻発しました。
ググってみてqiitaとかで出た解決方法で/tmp/mysql.sockファイルを生成して_mysqlで所有者を変更しても状況は変わらず。

色々と試してみて意外と簡単にインストールできたので、共有します。
以下のPostが役に立ちました。

* https://reasonable-code.com/mysql-start-error/

```sh
sudo rm -rf /usr/local/var/mysql
brew uninstall mysql
brew install mysql
mysql.server start
```

最初はこの方法もダメだったので、エラーログを確認すると、

```sh
cat /usr/local/var/mysql/devtopia.local.err # <自分のアカウント>.local.err

2019-07-09T08:46:22.708354Z 0 [ERROR] [MY-010270] [Server] Can't start server : Bind on unix socket: Address already in use
2019-07-09T08:46:22.708361Z 0 [ERROR] [MY-010258] [Server] Do you already have another mysqld server running on socket: /tmp/mysql.sock ?
2019-07-09T08:46:22.708955Z 0 [ERROR] [MY-010119] [Server] Aborting
2019-07-09T08:46:24.322808Z 0 [System] [MY-010910] [Server] /usr/local/Cellar/mysql/8.0.16/bin/mysqld: Shutdown complete (mysqld 8.0.16)  Homebrew.
```

この方法を試す以前にやってみたtouchコマンドで/tmp/mysql.sockを生成して_mysqlユーザーに所有者を変更したのが問題でした。

```sh
sudo rm /tmp/mysql.sock
mysql.server start

mysql -uroot
```

これで無事にlocalでmysqlサーバーを立ち上げました。

brew servicesでの立ち上げも問題ないことを確認しました。
以前試した旧バージョンのゴミは削除しました。

```sh
 ~ launchctl list | grep mysql
146:-   78      homebrew.mxcl.mysql@5.7
372:-   0       homebrew.mxcl.mysql
 ~ launchctl remove homebrew.mxcl.mysql@5.7

 brew services start mysql
```

## mysql2のgemをインストール

```sh
bundle install

... snip ...

Don't know how to set rpath on your system, if MySQL libraries are not in path mysql2 may not load
-----
-----
Setting libpath to /usr/local/Cellar/mysql/8.0.16/lib

... snip ...
```

以前、mariadbを使っていた時に書いた[記事](https://qiita.com/park-jh/items/3084092ac4290ded6c5e)ですが、この方法でもmysql2のインストールが失敗しました。
ググってみて以下のPostで問題を解決しました。

* https://github.com/brianmario/mysql2/issues/795#issuecomment-337006164

```sh
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/

env | grep -i library
21:PATH=/Users/devtopia/.nvm/versions/node/v10.15.3/bin:/Users/devtopia/.composer/vendor/bin:/usr/local/Cellar/zplug/2.4.2/bin:/usr/local/opt/zplug/bin:/usr/local/var/rbenv/shims:/usr/local/bin:/usr/local/sbin:/usr/local/opt/mysql@5.7/bin:/Users/devtopia/.nvm/versions/node/v10.15.3/bin:/Users/devtopia/.composer/vendor/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin:/Library/Apple/bin:/Applications/VMware:Fusion.app/Contents/Public:/opt/X11/bin
66:LIBRARY_PATH=:/usr/local/opt/openssl/lib/

bundle

The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`.
Fetching gem metadata from https://rubygems.org/............
Fetching gem metadata from https://rubygems.org/.
Resolving dependencies...

... snip ...

Fetching mysql2 0.5.2
Installing mysql2 0.5.2 with native extensions
Using pry 0.12.2

... snip ...
```

mariadbのlibraryをベースにmysql2のgemをcompileしたので、mysqlのlibraryをベースにしてもう一度再compileしないといけません。
.bundle/configファイルからmysql関連内容を削除して「bundle」を実行してください。
もしopensslがインストールされていない場合はインストールしてください。

```sh
brew install openssl
```