MySQL 5.5 を Homebrew でインストールする手順 (Mac OS X)

投稿者 : OSCA

[PR] "東野・岡村の旅猿"で登場したロケ地を紹介するファンサイト「あの場所へ行こう!」はこちら。

 本稿では MySQL 5.5 を Homebrew を利用して Mac OS X にインストールする手順について解説します。

パッケージを検索する

 まずは brew search コマンドで MySQL 5.5 のパッケージ名 mysql55 をキーにして検索し、Homebrew で MySQL 5.5 のパッケージが提供されていることを確認しましょう。

$ brew search mysql
mysql55

上の結果のように mysql55 が表示結果に含まれていればOKです。

インストール

 インストールはコマンド brew install mysql55 でできます。 Homebrew のいつも通りのコマンドですね。

$ brew install mysql55
(略)
A "/etc/my.cnf" from another install may interfere with a Homebrew-built server starting up correctly.

To connect:
    mysql -uroot

This formula is keg-only, so it was not symlinked into /usr/local.

Conflicts with mysql, mariadb, percona-server, mysql-cluster, etc.

Generally there are no consequences of this for you. If you build your own software and it requires this formula, you'll need to add to your build variables:

    LDFLAGS: -L/usr/local/opt/mysql55/lib
    CPPFLAGS: -I/usr/local/opt/mysql55/include


To have launchd start mysql55 at login:
    ln -sfv /usr/local/opt/mysql55/*.plist ~/Library/LaunchAgents
Then to load mysql55 now:
    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql55.plist
Or, if you don't want/need launchctl, you can just run:
    mysql.server start
==> /usr/local/Cellar/mysql55/5.5.30/bin/mysql_install_db --verbose --user=$(whoami) --basedir=/usr/local/Cellar/mysql55/5.5.30 --datadir=/usr/local/var/mysql55 --tmpdir=/tmp
(snip)

 インストールした mysql55 パッケージはこの時点で有効になっていません。(keg-only) これは他のパッケージと競合する可能性がある為です。 その為、次のコマンドで mysql55 を有効にします。

$ brew link mysql55 --force
Linking /usr/local/Cellar/mysql55/5.5.40... 133 symlinks created

自動起動設定

 インストールした MySQL 5.5 が Mac OS X の起動時に自動的に起動するように設定しましょう。 上記のインストール完了時のメッセージにある通り、次のコマンドで設定できます。

$ ln -sfv /usr/local/opt/mysql55/*.plist ~/Library/LaunchAgents

~/Library/LaunchAgents ディレクトリにリンクを作成しています。 ~/Library/LaunchAgents は Mac OS X の仕組みで、起動時に自動的に立ち上げるアプリを登録します。

 これで次回 Mac を起動した時には自動的に MySQL 5.5 が起動しますが、今すぐ再起動せずに起動する場合には次のコマンドで起動します。

$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql55.plist

 または、自動起動しない場合に実行する起動コマンドでも起動できます。

$ mysql.server start

 なお、何らかの理由により MySQL 5.5 を停止したい場合は次のコマンドを実行します。

$ mysql.server stop

初期設定

 ここからは MySQL 5.5 を入れたら必ず実施したい初期設定について解説します。

root ユーザーのパスワード設定

 特に重要性を説明する必要はないかと思いますが、MySQL 5.5 をインストールした初期状態では MySQL の管理者となる root ユーザーのパスワードが設定されていない為、MySQL を安全に運用するためにパスワードを設定しましょう。mysqladmin -u root password ‘new-password’ コマンドでパスワードを設定することができます。(次の例だと「new-password」が新しく設定するパスワードです)

# mysqladmin -u root password 'new-password'

 一度パスワードを設定した場合は、次のように -p を付けて、古いパスワードを入力してパスワードを変更します。(次の例だと「old-password」が現在のパスワード、「new-password」が新しく設定するパスワードです)

# mysqladmin -u root -p password 'new-password'
old-password

 これで root ユーザーのパスワード設定は完了です。

mysql_secure_installation

次に mysql_secure_installation について解説します。 実行する前にこのコマンドがどのようなものなのかを解説しましょう。

このコマンドで設定できることは次のことです。

  • root ユーザーパスワードの変更
  • anonymous ユーザーの削除
  • リモートホストから root ユーザーでログインするのを禁止する
  • testデータベースの削除 (存在する場合)

mysql_secure_installation はローカルでの開発で MySQL を利用するような場合は必要ないかもしれませんが、実際に運用する環境にインストールしたのであれば行うべきでしょう。

このスクリプトでも、安全の為、root ユーザーのパスワードを変更するかを聞いてくれます。 既にパスワードを変更していれば改めてパスワードを変更する必要はありません。
MySQL の初期状態では anonymous という匿名用ユーザーが設定してあります。 実際に運用するには安全ではないユーザーであるため削除することを推奨します。
リモートホストから root ユーザーでアクセスすることを禁止します。 基本的にはリモートから MySQL にアクセスすることを許す場合は、それ専用のユーザーを作成して許可する方が良いです。
MySQL の初期状態に入っている test という名称のデータベースを削除します。

実際のコマンドは次のようになります。 対話式ですので、Yes(Y) か No(n) で答えれば良いです。

# mysql_secure_installation
...
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

In order to log into MySQL to secure it, we'll need the current
password for the root user. If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): パスワードを入力
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

You already have a root password set, so you can safely answer 'n'.

Change the root password? [Y/n] n
... skipping.

By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
... Success!

Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
... Success!

By default, MySQL comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
... Success!

All done! If you've completed all of the above steps, your MySQL
installation should now be secure.

Thanks for using MySQL!

Cleaning up...

 これにて、ひと通りの初期設定が完了しました。 ここからは MySQL 5.5 を十分にエンジョイしてください。

おわりに

 本稿では Homebrew で MySQL 5.5 を Mac OS X にインストールする手順について説明しました。

MySQL 入門へ戻る

MySQLのトップへ戻る

著者 : OSCA

OSCA

Java, PHP 系のWEBエンジニア。 WEBエンジニア向けコミュニティ「WEBエンジニア勉強会」を主催。 個人として何か一つでも世の中の多くの人に使ってもらえるものを作ろうと日々奮闘中。
@engineer_osca