こんにちは!フリーランスの桃太郎です。
Railsにて開発を進める際に、データベースは何を使うか悩む方も多いかと思います。
数多くあるデータベースの中でも比較的利用者が多いMySQLについて本記事では取り上げ、
・MySQLとは
・MySQLの導入
という基本的な内容から、
・後からMySQLに変更する方法
など実践的な内容についても解説していきます。
MySQLの導入や使い方について正しく理解し、必要な場面で使いこなすことができるように、わかりやすく解説します!
mysqlとは
データベース管理システム、いわゆるRDBMSは様々なソフトウェアが存在します。
オラクルデータベース、PostgreSQL、SQLite、そして、今回の主役であるMySQLです。
MySQLは世界の中で最もよく利用されているオープンソースのデータベースの一つといわれています。
mysqlを導入する手順
それでは早速RailsにMySQLを導入する手順から解説していきます。
インストール
まずはMySQLをインストールするところから始めます。
以下のMySQLの公式サイトからパッケージをダウンロードします。
またダウンロード後のMySQLの設定方法などは以下のサイトを参考にしてください。
また、MySQLの作業ユーザ、パスワードも合わせて作成しておきます。
MySQLのターミナルにて以下のコマンドを実行すると作成可能です。
[MySQLのターミナルにて実行]
CREATE USER user; #もしくは CREATE USER user IDENTIFIED BY 'password';
次からはMySQLがインストール済みでユーザも作成済みの前提で話を進めます。
新規アプリ作成時に指定
Railsにてアプリケーションを新規で作成する際、初期設定では、SQLiteが設定されます。
そのため、新規アプリ作成時のコマンドにて下記の通り明示的にMySQLを利用することを宣言します。
[コンソールにて]
rails new アプリケーション名 -d mysql #もしくは rails new アプリケーション名 --database=mysql
上記コマンドにより、新規アプリではMySQLをデータベースとして利用できるようになります。
接続設定
新規アプリを作成後、configフォルダ配下にdatabase.ymlが作成されています。
このファイルがデータベースとの接続情報を設定するファイルとなります。
そして、ファイルの中身では、開発環境、本番環境、テスト環境それぞれにdevelopment,production,testの項目があるので、事前に作成したユーザ名やパスワードなどを設定します。
development: adapter: mysql2 encoding: utf8 reconnect: false database: mysql_development pool: 5 username: root password: host: localhost
ここまで準備ができましたら、あとはrailsの通常のモデルやテーブルを作成する手順で進めていくことでMySQLのデータベース内にテーブルが作成されていきます。
railsのモデルの作成やテーブルについて詳しく知りたい方は以下の記事を参考にしてください。
後からMySQLに変更する方法
例えば、最初にSQliteを使っていて、開発の途中からデータベースをMySQLに切り替えたい場面に遭遇することもあるかもしれません。
その際は、以下の手順で変更します。
Gemfileの更新
Gemfileにmysqlを利用するためのアダプタを設定します。
gem 'mysql2'
設定後、bundle install コマンドを実行します。
$ bundle install
実行結果
(中略) Installing mysql2 0.4.8 with native extensions (中略)
database.ymlの更新
SQLiteの接続情報が記載されているdatabase.ymlの中身を先ほどご紹介したMySQL用のdatabase.ymlの中身の項目に書き換えます。
(右側の項目値はそれぞれのプロジェクトによって異なります。ご自身の設定したユーザ名などに読み替えが必要です。)
development: adapter: mysql2 encoding: utf8 reconnect: false database: mysql_development pool: 5 username: root password: host: localhost
db:create / db:migrateコマンド実行
以下のコマンドを実行し、MySQLのデータベースを構築します。
[コンソールにて]
$rails db:create $rails db:migrate
SQLを実行する方法
MySQLを導入後、作成したテーブルの中身のデータを確認したり、テーブルのカラム構成を調べるなどを行いたい場面は多くあると思います。
そのような時は、コンソール上で以下のコマンドを実行します。
$rails db (中略) mysql>
上記コマンドはRailsが現在接続しているデータベースを適切に選び、そのDBへの参照や更新などが行える対話式モードへ接続してくれる便利なコマンドです。
ぜひ、活用してみてください。
まとめ
本記事でMySQLとRailsの接続を行う為の手順をご紹介しました。
データベースは様々なシステムで不可欠な存在であり、開発を進めていく上で避けて通ることはできない必須のスキルです。
Railsではデータベースとの接続についてconfig/database.ymlファイルで一元管理しています。
現在自分の開発環境ではどんなデータベースを利用しているかご存知なかった初学者の方はぜひ一度ご確認いただき、この機会にぜひデータベースについてさらに詳しく学んでみてください。
もし、今後MySQLに関して迷うことがあれば、ぜひこの記事を思い出して下さいね。