ハイパーニートプログラマーへの道

頑張ったり頑張らなかったり

【備忘録】MySQL2のインストール(on Mac)、Railsでの設定

外部プロジェクトクローンしてきて

$ bundle install --path vender/bundle

としたけど怒られた。そういえばまだシステムにMySQLをインストールしてなかったので。
環境はMac(Yosemite)です。

$ brew update
$ brew install mysql
==> Downloading https://homebrew.bintray.com/bottles/mysql-5.6.24.yosemite.bottl
######################################################################## 100.0%
==> Pouring mysql-5.6.24.yosemite.bottle.tar.gz
==> Caveats
A "/etc/my.cnf" from another install may interfere with a Homebrew-built
server starting up correctly.

To connect:
    mysql -uroot

To have launchd start mysql at login:
    ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
Then to load mysql now:
    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
Or, if you don't want/need launchctl, you can just run:
    mysql.server start

インストール時に表示されるメッセージは
$ brew info mysqlで確認できる。

ログインにラウンチするわけでもないので普通に

$ mysql.server startでスタートさせる。

$ mysql -urootで入る。(パスワード設定しているならmysql -uroot -p

mysql> select Host, User, Password from mysql.user;

でホスト名、ユーザー名、パスワードなどを確認できる。

MySQLのユーザー作成

root以外にユーザー作成しておく。一応。
(root権限で入った上で)

mysql> CREATE USER
    -> 'USERID'@'DATABASE_development' identified by 'PASSWORD',
    -> 'USERID'@'DATABASE__test' identified by 'PASSWORD';

(7/7)
上記でDATABASE__testとアンダースコアを2つも入れていたw
後述の$ ./bin/rake db:create RAILS_ENV=testでのエラーはそれが原因?
いかんせん時間が経っているのでよくわからんです・・・。


database.ymlの設定

default: &default
  adapter: mysql2
  encoding: utf8
  pool: 5
  username: USERID
  password: YOURPASSWORD
  socket: /tmp/mysql.sock

development:
  <<: *default
  database: DATABASE_development
test:
  <<: *default
  database: DATABASE__test
production:
  <<: *default
  database: DATABASE__production
  username: productionで使用するUSERID
  password: <%= ENV['ウンタラカンタラ_DATABASE_PASSWORD'] %> # productionで使用

Databaseの初期化

$ ./bin/rake db:create
$ ./bin/rake db:create RAILS_ENV=test

しかし$ ./bin/rake db:create RAILS_ENV=testlocalhostからの接続がAccess Deniedされました。
database.ymlに記述した内容に間違いはないので、権限を与えます。

mysql> show grants for 'USERID'@'localhost'; # 確認
mysql> grant all on DATABASE_test.* to 'USERID'@'localhost';

その後マイグレーション

$ ./bin/rake db:migrate
$ ./bin/rake db:migrate RAILS_ENV=test

参考記事:

OSX - Mac へ MySQL を Homebrew でインストールする手順 - Qiita

HomebrewでMySQLをインストールする時に知っておきたいこと | Macとかの雑記帳

ユーザーの作成(CREATE USER文) - ユーザーの作成 - MySQLの使い方

Ruby on RailsでMySQLを使用する際に必要な作業手順

データベースとの接続(MySQL編) - Rails本番環境構築ガイド - Ruby on Rails with OIAX

データベースとの接続(MySQL編) - Rails本番環境構築ガイド - Ruby on Rails with OIAX