Help us understand the problem. What is going on with this article?

初心者がMacのローカル環境にMySQL 8.0をインストールしてSequel PROで接続したかった奮闘記。

はじめに

会社でMySQLを使用する業務を行うことになりました。
ProgateのSQLコースを修了しただけの低レベルの僕に合わせて、
上司がMySQLの基礎を固めるための簡単なトレーニングメニューを組んで下さいました。
簡単そうだからすぐに終わらせようと思っていたのに、最初の段階でちょっと躓いて、一週間以上かかってしまいました。
今後同じ道を辿る初心者を生み出さないために、注意点をまとめました。

Google先生が教えてくれる既存の資料は、Homebrewを使用する方法だとか、
MySQL5.6 や 5.7 のやり方のものがほとんどです。
この記事では、現時点での最新版 MySQL8.0 でのやり方を記録しています。

記事のターゲット

下記のようなキーワードでGoogle検索している方に、ぜひこの記事を見つけてほしいです。

「MySQL 接続できない」
the server quit without updating pid file
No such file or directory
Access denided for user
server command not found
Authentication plugin 'caching_sha2_password' cannot be loaded

今回の目的

上司から頂いたトレーニングメニューは以下です。

参考資料:MySQL5.6リファレンスマニュアル(日本語版) をもとに、
1. ローカル環境もしくは仮想環境を用意してMySQLをインストールする。
2. 起動したMySQLへクライアントツール(なんでもよし)で接続する。
3. リファレンスマニュアル実施(3.3 データベースの作成と使用 )
4. リファレンスマニュアル実施(3.6 一般的なクエリーの例 )

上記ミッションのうち、 1~2 を遂行する際に少し躓いたため、これを遂行する際の注意点をここにまとめています。

※ MySQLはローカル環境にインストールします。
※ MySQLは最新版の8.0をインストールします。
※ MySQL8.0の資料は英語表記のため、唯一日本語資料が用意されているMySQL5.6のマニュアルを参考に進めております。

結論

申し訳有りません。
Sequel PROで接続できた段階で、舞い上がってこんな記事を作成してしまいましたが、
Sequel PRO上で操作しようとすると必ずエラーがでて進まなくなってしまいました。
そこで再度調べた所、認証方式がどうこうではなく、そもそもSequel PROはMySQL8.0に非対応とのことで、どうあがこうと無理という結論に達しました。

僕がこの結論にたどり着くまでの苦労の軌跡を残すため、この記事は削除せずに置いておくことにします。
どうか、おなじく無駄な時間を過ごす初心者が1人でも減ってくれますように…。

おわり。

【要点】 クライアントツールの選定

さて、今回の重要ポイントを先に説明させていただきます。
今回、クライアントツールはなんでもよいというミッションだったので、評判の良いSequel PROを選択しているのですが、ここが最大のワナなのでした。
なんとSequelPROは、MySQLが採用している最新のログイン認証方式(caching_sha2_password)に非対応だったのです。
以下の記録は、そのことを頭に入れてから読み進めてください。

ローカル環境にMySQLをインストールする。

注意点:
接続に躓いてGoogle検索してみると、Homebrewを使用するインストール方法が沢山ヒットしますが、それは大抵の場合 MySQL5.6 や 5.7 向けの方法かと思われます。
この記事では、公式サイトからダウンロードできる MySQL8.0 用のディスクイメージ(.dmgファイル)を使用してインストールします。

  1. MySQL公式ページの DOWNLOADSメニュー > Communityタブ > MySQL Community Server(GPL) から、DMG Archive をダウンロードして、実行する。

  2. インストーラでUse Strong Password EncryptionUse Legacy Password Encryptionを選ぶ画面になったらUse Legacy Password Encryptionを選択する。
    mac-installer-configuration-password-type.png

  3. あとは通常通りインストールを完了させる。
    (Google検索してみると、このあとTerminalでmysql.server startをさせるような記事が多い。
    しかし、今回の方法でインストールしている場合、システム環境設定からサーバーの起動が可能。
    さらに、基本は自動でサーバーを起動してくれているため、上記の操作は不要である。)

  4. Terminalでmysql -vと入力してみた際、コマンドがmysql: command not foundとなる時は、ターミナルで下記を実行。

echo 'export PATH=/usr/local/mysql/bin:$PATH' >> ~/.bash_profile

試しにTerminalでmysql -u root -pと入力して、パスワードを入力すると、問題なくMySQLが実行できると思われる。
(MySQL8.0以前はrootユーザのパスワードを設定するかどうかは任意だったようだけど、今回の方法でインストールしている場合、パスワード設定は必須なので、-pというオプションを使用しないでログインすることは不可能です。)

以上。

既に失敗してしまった方へ。

上記のような手順を踏まず、既にドツボにハマってしまった方。
まだやり直せる状況であれば、MySQLのクリーンインストールを行う事が一番安全だと思います。

Google検索すると、MySQLのアンインストールをする際に、Terminalから関連ファイルの削除を行う情報が多くヒットします。
しかし、今回の方法でインストールしている場合、システム環境設定から完全にアンインストールを行うことが可能です。Terminalを使用してアンインストールをする必要は恐らくありません。
(間違っていたらコメントください。)
システム環境設定からアンインストールをする際に、Also uninstall this preference pane, and launchd support files.にチェックをして下さい。

既にMySQLを運用してしまっている等で、クリーンインストールをすることが出来ない場合、ユーザごとに認証方式を変更する方法もあるようです。
参考:MySQL8.0 認証方式を変更する(Laravel5)
僕はこれを行った際、rootユーザの認証方式を変更してしまい、再度MySQLに接続できなくなる事象が発生しているので、
認証方式を変更する場合は、rootユーザではなく、新規作成されたユーザの設定を変更したほうが安全だと思います。

おわり。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away