MySQL8.0インストール時の諸々のエラー解決

What

MySQL8.0インストール時に詰まったので、その対策等を記録しておきます。

MySQL8.0のインストール

Homebrew経由で取得します。デフォルトで最新版をインストールすることができます。

$ brew install mysql

パスワードの再設定

MySQLが起動しているなら、rootユーザーとしてログインできます。初期ではパスワードが設定されていないため、Enterでログインできます。

$ mysql -u root -p 

MySQL8.0は5.x以前と比べて関数が変更されているため、以下の手順でパスワードを変更します。

mysql > user mysql;
mysql >  alter user 'root'@'localhost' identified by '<設定したいパスワード>';
mysql > exit;

[参考]

qiita.com

bundle install

Rails6.0でMySQLを使用する場合、以下のエラーがでて、インストールできないことがあります。

An error occurred while installing mysql2 (0.5.2), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.5.2' --source 'https://rubygems.org/'` succeeds before bundling.

指示通りコマンドを実行します。

$ gem install mysql2 -v '0.5.2' --source 'https://rubygems.org/'

またしてもエラーです。

Don't know how to set rpath on your system, if MySQL libraries are not in path mysql2 may not load

pathが合ってないみたいなので、以下のコマンドで詳しくみてやります。

$ brew info openssl

ビンゴっぽい文言が出てきました (親切で嬉しい)。

If you need to have openssl@1.1 first in your PATH run:
  echo 'export PATH="/usr/local/opt/openssl@1.1/bin:$PATH"' >> ~/.zshrc

For compilers to find openssl@1.1 you may need to set:
  export LDFLAGS="-L/usr/local/opt/openssl@1.1/lib"
  export CPPFLAGS="-I/usr/local/opt/openssl@1.1/include"

ホームディレクトリに.zshrcファイルを作成 (または既存のファイルを利用) して以上のものを追記しておきます。

$ sudo vi ~/.zshrc
export PATH="/usr/local/opt/openssl@1.1/bin:$PATH"
export LDFLAGS="-L/usr/local/opt/openssl@1.1/lib"
export CPPFLAGS="-I/usr/local/opt/openssl@1.1/include"

これで、bundle installやrails db:create等ができるはずです。

MySQLの中身を見る

RubyMineだと簡単に見れるらしいのですが、VSCodeを使用している (乗り換えようかなぁ) ので、別の方法で見ます。

結論ですが、TablePlusがオススメです。セキュリティ認証レベルを昔のに戻すと、Sequel Proでも使用できるのですが、せっかく登録したrootユーザーのパスワードがぱーになったりして、困ったので、別ツールを使用することにしました。ちなみに、Sequel Pro build版でもMySQL8.0のセキュリティ認証 (caching_sha2_password) に未対応でした (2020.07.01 現在)。

[参考] https://www.tcmobile.jp/dev_blog/db/sequelpro%E3%81%8Cmysql%E3%81%AB%E7%B9%8B%E3%81%8C%E3%82%89%E3%81%AA%E3%81%84%E3%81%AE%E3%81%A7tableplus%E3%81%AB%E4%B9%97%E3%82%8A%E6%8F%9B%E3%81%88%E3%81%9F/