はじめに
タイトル通りmysqlのバージョン(5.1と5.5)をインストールする方法です。
homebrew-versionsとhomebrew-boneyardを使います。
homebrewでは以前にもやったことはあるのですが、あらためてやってみたら少しやり方が変わってたのでメモ。
ながれ
- homebrew-versionsとhomebrew-boneyard
- homebrew-versionsからインストール
- homebrew-boneyardからインストール
1. homebrew/homebrew-versionsとhomebrew/homebrew-boneyard
前はこんな感じで任意のバージョンがインストールできました。
# brew versions mysql Warning: brew-versions is unsupported and may be removed soon. Please use the homebrew-versions tap instead: https://github.com/Homebrew/homebrew-versions 5.6.19 git checkout 3d3d8ae /usr/local/Library/Formula/mysql.rb 5.6.17 git checkout e271c21 /usr/local/Library/Formula/mysql.rb ・・・省略・・・ 5.1.44 git checkout 052d1f2 /usr/local/Library/Formula/mysql.rb 5.1.43 git checkout c4decd7 /usr/local/Library/Formula/mysql.rb ※ 任意のバージョンのコミット番号をチェックアウトしてからinstall # git checkout 052d1f2 /usr/local/Library/Formula/mysql.rb # brew install mysql
brew versions
はそのままでは使えなくなったようなので
homebrew-versionsやhomebrew-boneyardを使ってインストールするようです。
ということで参考にさせて頂いたサイトまんまの引用ですが、
まずは説明&違いを。
homebrew-versions
公式とは異なるバージョンのフォーミュラを扱うリポジトリ
最新とは異なるバージョンのソフトを利用したい場合などに使用
(e.x. Tomcat6, MySQL5.1, Python2.x, Python3.x など)
homebrew-boneyard
メンテナンス不足や解決できない問題により公式リポジトリから
外されたフォーミュラを扱うリポジトリ (boneyard : 墓場, がらくた置き場)
※ ここにあるものをインストールする場合は動作が保証されていないので要注意
参考
こちらを参考にさせていただきました
→Macのパッケージ管理をMacPortsからhomebrewへ
2. homebrew-versionsからインストール
準備
まずは確認と準備
※ 何もしない状態でインストールできるものをsearchしてみる # brew search mysql automysqlbackup mysql mysql-cluster mysql-connector-c++ mysql-proxy mysqlreport groonga-normalizer-mysql mysql++ mysql-connector-c mysql-connector-odbc mysql-search-replace homebrew/versions/mysql51 homebrew/versions/mysql55 homebrew/php/php53-mysqlnd_ms homebrew/php/php54-mysqlnd_ms homebrew/php/php55-mysqlnd_ms homebrew/php/php56-mysqlnd_ms ※ homebrew/versionsで公式とは異なるフォーミュラを用意 # brew tap homebrew/versions ※ 再度インストールできるものをsearchしてみる(mysql51とmysql55が増えてる) # brew search mysql automysqlbackup mysql mysql-cluster mysql-connector-c++ mysql-proxy mysql51 mysqlreport groonga-normalizer-mysql mysql++ mysql-connector-c mysql-connector-odbc mysql-search-replace mysql55 homebrew/php/php53-mysqlnd_ms homebrew/php/php54-mysqlnd_ms homebrew/php/php55-mysqlnd_ms homebrew/php/php56-mysqlnd_ms
インストール
※ インストール # brew install mysql51 ・・・省略・・・ ==> Summary ==> Installing mysql51 Error: mysql51 cannot be built with any available compilers. To install this formula, you may need to: brew install gcc ※ gccいれろとエラーがでるので素直に従う # brew install gcc ※ 再度mysql51をインストール # brew install mysql51
他にもエラーが出る場合
macportsのエラー
こんな具合にmacportsが邪魔していていっそのこと消せる場合は消しましょう。
# brew install mysql51 ・・・省略・・・ checking for gcc... gcc-4.9 checking for C compiler default output file name... configure: error: in `/private/tmp/mysql51-l7S9UC/mysql-5.1.73': configure: error: C compiler cannot create executables See `config.log' for more details. Warning: It appears you have MacPorts or Fink installed. Software installed with other package managers causes known problems for Homebrew. If a formula fails to build, uninstall MacPorts/Fink and try again. READ THIS: http://git.io/brew-troubleshooting If reporting this issue please do so at (not Homebrew/homebrew): https://github.com/homebrew/homebrew-versions/issues
さらにエラーが出る場合
brew doctorコマンドでbrewのチェックをしてみると良いかもです
brew doctorでエラーが出る場合は直してあげましょう
# brew doctor Please note that these warnings are just used to help the Homebrew maintainers with debugging if you file an issue. If everything you use Homebrew for is working fine: please don't worry and just ignore them. Thanks! Warning: You have unlinked kegs in your Cellar Leaving kegs unlinked can lead to build-trouble and cause brews that depend on those kegs to fail to run properly once built. Run `brew link` on these: gmp libmpc mpfr ※ 怒られたやつにたいしてリンクを張る # brew link gmp # brew link libmpc # brew link mpfr
成功するとこんな感じ
# brew install mysql51 ==> Installing mysql51 from homebrew/homebrew-versions ==> Downloading http://mysql.mirrors.pair.com/Downloads/MySQL-5.1/mysql-5.1.73.tar.gz Already downloaded: /Library/Caches/Homebrew/mysql51-5.1.73.tar.gz ==> Patching patching file scripts/mysqld_safe.sh Hunk #1 succeeded at 411 (offset 27 lines). patching file scripts/mysql_config.sh Hunk #1 succeeded at 133 (offset 1 line). ==> ./configure --without-docs --without-debug --prefix=/usr/local/Cellar/mysql51/5.1.73 --localstatedir=/usr/local/var/mysql --sysconfdir=/usr/local/etc --with-plugins=innobase ==> make install ==> Caveats Set up databases with: unset TMPDIR mysql_install_db This formula is keg-only, which means 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/mysql51/lib CPPFLAGS: -I/usr/local/opt/mysql51/include To have launchd start mysql51 at login: ln -sfv /usr/local/opt/mysql51/*.plist ~/Library/LaunchAgents Then to load mysql51 now: launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql51.plist Or, if you don't want/need launchctl, you can just run: mysql.server start ==> Summary 🍺 /usr/local/Cellar/mysql51/5.1.73: 221 files, 41M, built in 3.6 minutes
確認
上記のように成功したっぽい表記が出たのでmysql serverを立ち上げてrootで入ってみます
が、インストールメッセージの途中に
This formula is keg-only,
とあるように、実はこのままではうまくいきません。
なのでうまくいく小細工も合わせて確認
# mysql.server start -bash: mysql.server: command not found ※ リンクを貼ってあげるとうまくいく ※ --forceがないとまた怒られるので気になる方はつけずにやってみて下さい # brew link mysql51 --force ※ バージョン確認。うまくいってる感じ # mysql --version mysql Ver 14.14 Distrib 5.1.73, for apple-darwin13.4.0 (i386) using readline 6.3 ※ メッセージに従い初期ディレクトリの設定をする # unset TMPDIR # mysql_install_db Installing MySQL system tables... OK Filling help tables... OK To start mysqld at boot time you have to copy support-files/mysql.server to the right place for your system PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! To do so, start the server, then issue the following commands: /usr/local/Cellar/mysql51/5.1.73/bin/mysqladmin -u root password 'new-password' /usr/local/Cellar/mysql51/5.1.73/bin/mysqladmin -u root -h hoge-MAC.local password 'new-password' Alternatively you can run: /usr/local/Cellar/mysql51/5.1.73/bin/mysql_secure_installation which will also give you the option of removing the test databases and anonymous user created by default. This is strongly recommended for production servers. See the manual for more instructions. You can start the MySQL daemon with: cd /usr/local/Cellar/mysql51/5.1.73 ; /usr/local/Cellar/mysql51/5.1.73/bin/mysqld_safe & You can test the MySQL daemon with mysql-test-run.pl cd /usr/local/Cellar/mysql51/5.1.73/mysql-test ; perl mysql-test-run.pl Please report any problems with the /usr/local/Cellar/mysql51/5.1.73/bin/mysqlbug script! # mysql.server start Starting MySQL . SUCCESS! # mysql -uroot -p Enter password: mysql>
ってことで、一部リンクを張るという作業が必要なものの、うまくいきました。
参考
リンクに関してはちょこっとこちらが参考になりました
→keg-onlyなパッケージはシンボリックリンクが作られない
有効/無効の切り替え
他のバージョンを入れてみる際や、後述するhomebrew-boneyard使う場合は一時的に無効にするためにリンクをはずします
# brew unlink mysql51 Unlinking /usr/local/Cellar/mysql51/5.1.73... 92 symlinks removed
無効にするの簡単ですね!
パッケージについて
余談ですが、おもむろに/usr/local/bin
配下のmysql系を見てみるとこんな感じになってます。
bin配下のmysql系コマンドにbrewでいれたmysql51へのリンクが貼られて実行できるようになってます
# lrwxr-xr-x 1 hoge admin 34 11 25 21:13 /usr/local/bin/mysql -> ../Cellar/mysql51/5.1.73/bin/mysql lrwxr-xr-x 1 hoge admin 41 11 25 21:13 /usr/local/bin/mysql.server -> ../Cellar/mysql51/5.1.73/bin/mysql.server ・・・省略・・・ lrwxr-xr-x 1 hoge admin 38 11 25 21:13 /usr/local/bin/mysqltest -> ../Cellar/mysql51/5.1.73/bin/mysqltest
3. homebrew-boneyardからインストール
準備
まずは確認と準備。
※ homebrew-boneyard使わない状態でやってみる # brew versions mysql Error: Unknown command: versions ※ homebrew/boneyardでversionsを使えるようにする # brew tap homebrew/boneyard ※ brew versions mysql Warning: brew-versions is unsupported and will be removed soon. You should use the homebrew-versions tap instead: https://github.com/Homebrew/homebrew-versions 5.6.21 git checkout 9fa92cd /usr/local/Library/Formula/mysql.rb 5.6.20 git checkout dd37049 /usr/local/Library/Formula/mysql.rb ・・・省略・・・ 5.5.28 git checkout 5825f62 /usr/local/Library/Formula/mysql.rb ・・・省略・・・ 5.1.44 git checkout 052d1f2 /usr/local/Library/Formula/mysql.rb 5.1.43 git checkout c4decd7 /usr/local/Library/Formula/mysql.rb
補足
上述もしてますが、
homebrew-versionsで5.1入れた後や他のバージョンが入ってる場合は
一時的にリンクを外してそのバージョンを無効にしてから行います
# brew unlink mysql51
インストール
今回は5.5.28を入れてみます。
上記の一覧から5.5.28のコミット番号5825f62
を使います
※ 移動 # cd /usr/local ※ 過去のバージョンのフォーミュラをcheckout # git checkout 5825f62 Library/Formula/mysql.rb ※ インストール # brew install mysql
確認
※ 移動してないと後述のmysql_install_dbがうまくいかないことも # cd /usr/local # mysql --version mysql Ver 14.14 Distrib 5.5.28, for osx10.9 (x86_64) using readline 5.1 # メッセージに従い初期ディレクトリの設定をする # unset TMPDIR # mysql_install_db ※ mysql server 起動 mysql.server start ※ mysqlにはいってみる # mysql -uroot -p ※ はいれた mysql> ※ ついでにステータスを確認して本当に5.5.28か確認 mysql>status -------------- mysql Ver 14.14 Distrib 5.5.28, for osx10.9 (x86_64) using readline 5.1 Connection id: 1 Current database: Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.5.28 Source distribution Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: utf8 Db characterset: utf8 Client characterset: utf8 Conn. characterset: utf8 UNIX socket: /tmp/mysql.sock Uptime: 24 sec Threads: 1 Questions: 4 Slow queries: 0 Opens: 15 Flush tables: 1 Open tables: 8 Queries per second avg: 0.166 --------------
補足
mysqlを入れただけなので初期設定は行う必要があります。その辺りはこちらで
mac OS XにHomeBrewでmysqlインストール。からの設定(mysql_install_db、mysql_secure_installation、my.cnf)やらアンインストールやら
その他
いちおう確認しますが、homebrew-boneyardでいれた場合は
通常のbrew install mysql
の挙動を変えてしまうのでディレクトリもこんな感じになります
# cd /usr/local/opt # ls -al mysql* lrwxr-xr-x 1 hoge admin 22 11 25 21:58 mysql -> ../Cellar/mysql/5.5.28 lrwxr-xr-x 1 hoge admin 24 11 25 21:53 mysql51 -> ../Cellar/mysql51/5.1.73
特に問題なければhomebrew-versionsで入れた方が
ディレクトリも別にできて安心そーです。
まとめ
思ったより長くなりましたが、任意のバージョンを入れることができました。
少しだけmysql試したくなった場合なんかはオフラインでも使えるし
入れておいて損はなさそうですね\(^o^)/