macOSにMySQLをHomebrewでインストールする

「Dockerで開発環境を作らないヤツは人にあらず」的な空気を感じる昨今ですが、古来から子々孫々と受け継がれし方法を現代に伝承していく所存であります。

というわけで、HomeBrewでmacOSにMySQLを入れていきます。

MySQLをインストールする

パッケージ確認

執筆時点でのリポジトリの内容は以下の通り。複数のバージョンが並んでますね。

$ brew search mysql
==> Formulae
automysqlbackup           mysql-client              mysql-connector-c++       mysql-utilities           mysql@5.7
mysql                     mysql-cluster             mysql-sandbox             mysql@5.5                 mysqltuner
mysql++                   mysql-connector-c         mysql-search-replace      mysql@5.6

==> Casks
mysql-connector-python                      mysql-utilities                             navicat-for-mysql
mysql-shell                                 mysqlworkbench                              sqlpro-for-mysql

バージョンを指定しなかった場合は8系が入るようになっています。

$ brew info mysql  
mysql: stable 8.0.16 (bottled)
Open source relational database management system
https://dev.mysql.com/doc/refman/8.0/en/
(中略)

インストール

brewコマンド一発です。今回は5.7をインストールしました。

$ brew install mysql@5.7

インストールが完了すると、最後のあたりにこの後何をすればよいか案内文が表示されますので、こいつをメモしておきます。

We've installed your MySQL database without a root password. To secure it run:
    mysql_secure_installation

MySQL is configured to only allow connections from localhost by default

To connect run:
    mysql -uroot

mysql@5.7 is keg-only, which means it was not symlinked into /usr/local,
because this is an alternate version of another formula.

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

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

For pkg-config to find mysql@5.7 you may need to set:
  export PKG_CONFIG_PATH="/usr/local/opt/mysql@5.7/lib/pkgconfig"


To have launchd start mysql@5.7 now and restart at login:
  brew services start mysql@5.7
Or, if you don't want/need a background service you can just run:
  /usr/local/opt/mysql@5.7/bin/mysql.server start

パスを通す

お使いの環境に合わせパスを通します。ここではzshを利用しているので.zshrcを編集しています。bashをお使いの場合は.bashrcを編集してくださいませ

$ vi ~/.zshrc
export PATH=/usr/local/opt/mysql@5.7/bin/:$PATH

$ source ~/.zshrc

確認

インストールが正常に行われてたのか確認も兼ねてバージョンを出力してみます。無事に5.7.26が入りましたね。

$ mysql --version
mysql  Ver 14.14 Distrib 5.7.26, for osx10.14 (x86_64) using  EditLine wrapper

サーバを起動

サーバが起動していないとこの後何もできませんので、何はなくとも最初に起動してやります。ここでは案内文の通りbrewの機能を使っています。

$ brew services start mysql@5.7

現在どんなサービスが起動しているかはbrew services listで確認することが可能です。

$ brew services list            
Name      Status  User    Plist
mysql@5.7 started katsube /Users/katsube/Library/LaunchAgents/homebrew.mxcl.mysql@5.7.plist
php       stopped         
unbound   stopped         

サーバを停止するときはstop、再起動はrestartとなります。

$ brew services stop mysql@5.7
Stopping `mysql@5.7`... (might take a while)
==> Successfully stopped `mysql@5.7` (label: homebrew.mxcl.mysql@5.7)

my.cnfを編集する

私の環境だと/usr/local/etc/my.cnfにいましたので、こいつに必要な設定をしてやります。

$ cat /usr/local/etc/my.cnf
# Default Homebrew MySQL server config
[mysqld]
# Only allow connections from localhost
bind-address = 127.0.0.1

ひとまず文字コードの設定だけしました。

[mysqld]
character-set-server=utf8

設定後は再起動を忘れずに。

$ brew services restart mysql@5.7
Stopping `mysql@5.7`... (might take a while)
==> Successfully stopped `mysql@5.7` (label: homebrew.mxcl.mysql@5.7)
==> Successfully started `mysql@5.7` (label: homebrew.mxcl.mysql@5.7)

セキュリティ設定

今回はローカルの確認用に入れたので実行しませんでしたが、セキュリティの設定も必要であれば対話形式で行うことができます。

$ mysql_secure_installation

以下の様な設定が行なえます。

  • パスワードに設定する文字列を厳格化(するプラグインの導入)
  • rootのパスワード設定
  • rootで外部からのログインを禁止
  • anonymousユーザーの削除
  • テスト用のデータベースを削除

実際のサービスなどを動かす本番環境等で利用する場合は実行することをおすすめします。パスワード用のプラグインは肌に合わないので入れないことが多いですがw

実際に利用する

ログイン

インストール直後のデフォルト状態だとパスワードは設定されていませんので、rootでそのまま入ることができます。

$ mysql -u root

あとは通常のMySQLとして利用できます。