こんにちは。
fumimi(@fumimi)です。
RailsのDB(データベース)をMySQLに変更することは初心者の方が苦戦する項目の1つだといえます。
- DBってなに??
- MySQLってなに??
- RailsのDBってどうやって変更するの??
という方を対象にRailsのDBをMySQLに変更する方法を解説します。
DBコンソールの立ち上げからなるべく簡単に説明しますので初心者の方もコマンドやソースコードが書かれている箇所は上から順番に読み進めてみてください。
DBやMySQLの解説を行ってから簡単なRailsのサンプルアプリケーションを作成しながらデフォルトのSQLiteからMySQLへデータベースを変更する方法を解説していきます。
理解しながらコマンドを実行したりソースコードを修正しながらやるとおよそ8分程度で読めます。
環境
macOS High Sierra
Ruby 2.5.1
Rails 4.1.0
DBとは??
DBとは 「追加、取得、削除、更新をしやすい形に整理されたデータの集まり」 です。
MySQLとは??
MySQLとは、世界で最も多く使われているデータベースです。
特徴は、検索のスピードが高速で機能もすぐれていることです。そのためMySQLを使うことで、ユーザーからのアクセスが多い大規模なアプリケーションに対応することができます。
データベースは高機能なものだと有料の場合もありますが、MySQLはオープンソースであるため、他のデータベースよりも低コストで使うことができます。
また、オープンソースなので非商用利用であれば無償で使用できるため、初心者でも簡単に利用できます。
MySQL設定
多くの人がログインする可能性のあるデータベースは、常にrootユーザーのアカウントを使うことはセキュリティ上よくありません。
そのためデータベースを操作する場合には、特定のユーザーのみが特定のデータベース使えるように作業ユーザーを新しく作ることが一般的です。
それでは、作業ユーザーの作成方法から確認します。
MySQLの新規ユーザー作成と権限付与については以下の記事をご確認ください。
アプリケーションの新規作成
「アプリケーションの新規作成の方法はわかる」
「MySQLに変更の方法だけしりたい」
という方はこのセクションは読み飛ばしてください。
サンプルアプリケーションの作成を行います。
$ rails new _4.1.0_ Book
Rails設定
mysql2
というGemをインストールします。
gem 'mysql2'
Gemのインストールを実行します。
$ bundle update
$ bundle install
RailsのDBの設定ファイルである database.yml
というファイルを修正します。 database.yml
は config
というディレクトリの中にあります。 []
で囲まれている箇所はご自身の環境によって任意で修正してください。また、必要であればtest環境とproduction環境も同様にファイルを修正してください。
development:
adapter: mysql2
encoding: utf8
reconnect: false
database: [database]
pool: 5
username: [username]
password: [password]
host: localhost
テスト
$ rails g scaffold book title:string detail:string
$ rake db:migrate
migrate してうまくいけば完了です。