【Rails入門説明書】mysqlについて解説
はじめに
Railsアプリケーションは情報を保持するためにデータベースを利用しています。
ただし、データベースにはいくつかの種類があって、Railsアプリケーションを動作させるサーバーなどの環境によって、利用できるデータベースが決まってくるのです。
そのため、開発環境とは違うデータベースを使わなければいけないようなこともあります。
今回は、そんなデータベースの1つMySQLについて、MySQLとは何かということから、RailsでMySQLを使う方法、開発途中などにデータベースを切り替える手順などを、詳しく解説していきます。
なお、Windows環境へMySQLを導入する手順についても、簡単に説明しますので、開発環境へ導入し、動作確認をしていただくことをおすすめします。
MySQLとは
Railsで利用できるデータベースは、「リレーショナルデータベース(RDB)」というものです。これは、世界中でもっとも利用されているデータベースで、以下のような特徴を持っています。
・関連のあるデータ項目が、事前に定義されている
・データ項目は列として表現され、関連のあるデータ項目の集合体が行として表現されたテーブルが形成される
・データベースは、テーブル単位にデータを保持し、テーブル間の関係も保持する
・リレーショナルデータベースとのやりとりには、SQLが使用される
簡単に説明すると、EXCELやスプレッドシートのようなタイトル付きの表を思い浮かべれば良いでしょう。
MySQLは、そんなリレーショナルデータベースを管理するシステム(RDBMS)の1つで、大容量のデータベースを高速かつ安定的に利用でき、かつオープンソース(GPL)であることもあって、世界中で利用されています。
そのため、Railsで商用サイトを構築する場合などは、MySQLを利用することが多くなっています。
Railsの標準設定はSQLite
Railsで利用できるRDBMSは、「MySQL」と「PostgreSQL」、それに「SQLite」です。
そして、Railsをインストールして標準のまま使用する場合に使用されるRDBMSは「SQLite」になっています。
これは、SQLiteが、利用するまでのハードルが非常に低く、導入するために余計な学習コストがかからないことが理由です。
もちろん、SQLiteもリレーショナルデータベースを管理し、SQLを使用して操作することが可能ですので、基本的には問題ありません。しかし、SQLiteはそれほど大きなデータベースではなく、個人利用レベルのデータベースの利用を想定しています。
そのため、個人利用であっても巨大なデータベースを扱うような場合は、データベースの移行を検討した方が良いかもしれません。
https://web-camp.io/magazine/archives/12481
RailsでMySQLを使う
商用利用を前提としたRailsアプリケーションの開発を行う場合や、個人利用であっても、利用するレンタルサーバーで使われているデータベースがMySQLだった場合は、SQLiteでは都合が悪いことがあります。
そんなときは、MySQLを利用するように変更する必要があるでしょう。
ここでは、そんなRDBMSをMySQLへ変更する方法を説明します。
※MySQLを利用するためには、事前にインストールされている必要があります。MySQLのインストールについては、最後に説明していますので、そちらを確認してください
最初からMySQLで始める
前述の通り、RailsはデフォルトではSQLiteを使用しますので、MySQLを使用するためには、そのように指定してあげなければいけません。
そのため、MySQLを使用する場合は、Railsの環境作成時に、以下のようにコマンドにオプション指定してやります。
[bash]rails new アプリケーション名 –database=mysql
[/bash]
次のような省略形でも指定可能です。
[bash]rails new アプリケーション名 -d mysql
[/bash]
こうすることで、この環境で利用するRDBMSをMySQLに変更することができるわけです。
ただし、MySQLの場合、SQLiteと違ってアカウントとパスワードの指定などを行う必要がありますので、データベース設定ファイルにそれらの情報を追記しなければいけません。
データベース設定用ファイルは「config/database.yml」です。
ファイル内に、development(開発用)、test(テスト用)、production(本番用)の設定が別々にありますので、それぞれ入力していきます。
なお、設定項目は以下のようなものです。
項目 | 説明 | 設定値 |
---|---|---|
adapter: | 使用するデータベース種類 | mysql2 |
encoding: | 文字コード | utf8 |
reconnect: | 再接続するかどうか | false |
database: | データベース名 | アプリケーション名_development アプリケーション名_test アプリケーション名_production |
pool: | コネクションプーリングで使用するコネクションの上限 | 5 |
username: | ユーザー名 | root MySQLで作成した管理者権限のあるユーザー名 |
password: | パスワード | ユーザーのパスワード |
host: | MySQLが動作しているホスト名 | localhost |
基本的には、ユーザー名(username:)、パスワード(password:)、ホスト名(host:)の設定以外は、変更しなくても問題ありません。もちろん、環境によっては変更が必要ですので、確認して進めましょう。
なお、test環境のユーザーは、development(開発用)やproduction(本番用)とは違うものにしなければエラーになりますので、注意してください。
ただし、それだけではなく、環境ごとにMySQLの管理ユーザーを作っておく方が、セキュリティ上適切ですので、それぞれ別のユーザーを設定しておきましょう。
実際の設定ファイルに記載するのは、以下のような内容になります。
(config/database.yml)
:
development:
adapter: mysql2
encoding: utf8
reconnect: false
database: xxxxxx_development
pool: 5
username: root
password: *************
host: localhost
:
これで、MySQLを使用することができます。
https://web-camp.io/magazine/archives/12654
開発中(開発後)にMySQLへ変更する
開発中にRDBMSが変更になった場合や、本番用の環境への移行でRDBMSをMySQLへ変更するということもありますので、その方法も紹介しておきましょう。
gemの導入
まず、mysqlを利用するためのgemを導入します。
MySQLに変更したいRailsアプリケーションのGemfileに、以下の1行を追記して、コマンドプロンプトにて「bundle install」を実行しましょう。
gem ‘mysql2’
[bash]bundle install
[/bash]
データベース設定ファイルの編集
データベース設定ファイルをMySQL用に変更します。
設定内容は、MySQLで設定されているユーザー名やhostなどを設定することになりますが、元のファイルがSQLite用になっていますので、環境設定は書き直してください。
※開発中環境だけで試すのであれば、「development:」だけ修正して他はそのままでも問題ありません(すべての環境でMySQLを使用する場合でも、defaultはそのままで問題ありません)
(config/database.yml)
:
development:
adapter: mysql2
encoding: utf8
reconnect: false
database: appname_development
pool: 5
username: user_name
password: password
host: localhost
:
※appname_development、user_name、passwordについては、環境に合わせたものを設定してください
テーブルの作成
前項までで、SQLiteに作成していたテーブルは利用できなくなりましたので、コマンドプロンプトで以下のコマンドを実行し、改めてMySQLでテーブルを作成します。
[bash]rails db:create
rails db:migrate
[/bash]
なお、SQLiteに登録していたデータについては別途移行が必要ですので、注意してください。
“未経験”でもたった1ヶ月で営業からエンジニアとして転職!『WebCamp』受講者インタビュー
まとめ
今回は、MySQLについて、解説しました。
MySQLは非常に有名なRDBMSですので、名前くらいは聞いたことがあると思います。事実、数多くのレンタルサーバーで利用されており、多くの企業も採用している実績のあるRDBMSです。
そのため、Railsアプリケーションを実運用するに当たっては、MySQLへ移行する作業が多く発生することでしょう。そんなとき、本記事を参考に作業していただければ、非常に光栄です。
また、Webアプリケーションの開発は、こういった周辺知識も必要になってきますが、その分それらを知っていることで大きな強みともなります。
今回の記事でRDBMSについても興味を持っていただき、技術者としてのキャリアアップを図っていだくきっかけになれば幸いです。
・MySQLはリレーショナルデータベース管理システム(RDBMS)
・リレーショナルデータベースは、データを表の形のテーブルを使って管理している
・リレーショナルデータベースへのアクセスには、SQLを使用する
・RailsのデフォルトのRDBMSはSQLite
・RailsでMySQLを使用するためには、new時にオプション指定し、MySQLのユーザー設定をデータベース設定用ファイルに記述する
・MySQLのユーザーは、開発環境と本番環境、テスト環境で別々にするのが理想
・開発中などにMySQLへ切り替えるためには、gemを導入して、dbのcreateとマイグレーションをやり直す
MySQLのインストール(おまけ)
開発やテストなどで、自分のパソコンへMySQLを導入したい人のために、MySQLのインストール方法を、説明しておきます。
※なお、Windows10(64bit)へのインストール方法を説明していますので、Macの人は適宜読み替えてください
インストーラの入手
まずは、公式サイトのダウンロードページ(https://dev.mysql.com/downloads/installer/)へアクセスして、ご自分の環境のインストーラを入手してください。
アクセスすると、2種類の32bitインストーラのダウンロードができるようになっています。これは、インストール中に逐次インターネットからデータを取得するか、最初にまとめてダウンロードしてからインストールするかの違いで、内容に違いはありません。(※今回は前者を利用します)
また、32bitインストーラになっていますが、32bit版と64bit版の両方がインストールされます。
[DOWNLOAD]を押すと、オラクルのアカウントがある場合と新規作成する場合のボタンが大きく表示されていますが、アカウントを作成しなくてもダウンロードできる「No thanks, just start my download.」をクリックしてインストーラをダウンロードしましょう。
インストール
インストーラを実行すると、実行して良いかの確認ウインドウ(ユーザーアカウント制御)が表示されますので、[はい]をクリックしてください。
ライセンスが表示されたら、「I accept the license terms」にチェックを入れて、「Next」をクリックしましょう。
セットアップ方法の選択画面では、「Developers Default」を選択して、「Next」をクリックしてください。
必要なアプリケーションなどがインストールされているかどうかのチェックが行われます。
ここで必要なものが足らなければ、インストールするように促してくれます。この画面で表示されているアプリケーション名を選択すると、ダウンロードサイトなどのリンクがありますので、先にインストールやアップグレードを行ってください。(ここでは、Python3.7がインストールされていないので、Manualインストール(手動でインストール)する旨を教えてくれています)
必要なインストールやアップグレードを終えたら、「Next」をクリックしてください。
※必要なアプリケーションに不足がなければ、この画面は表示されません。
インストールするパッケージが一覧表示されます。[Execute]をクリックして、インストールを開始しましょう。開始すると、1行ずつ処理が進みますので、すべてのStatus が Complete になっていることを確認し、[Next]をクリックします。
このあと設定を行うアプリケーションの一覧が表示されますので、[Next]をクリックしてください。
サーバーにインストールするわけではありませんので、「Standalone MySQL Server」を選択して[Next]をクリックします。
接続設定などがありますが、そのまま[Next]をクリックして問題ありません。
認証方法については、必ず「Use Legacy Authentication Method(Retain MySQL 5.x Compatibility)」を選択してください。(デフォルトの「Use Strong Password Encryption for Authentication (RECOMMENDED)」では、Railsからのアクセスで認証できずに、エラーが出てしまいます)
選択したら、[Next]をクリックしてください。
rootアカウントのパスワード設定画面です。同じパスワードを2か所に入力してください。MySQLを管理するための基本的なパスワードですので、忘れないようにしてください。
なお、ここでroot以外の管理者アカウントを作成することができますので、必要であれば[Add User]をクリックしてアカウントを追加してください。
パスワードの入力と管理者アカウントの作成が完了したら、[Next]をクリックします。
Windowsサービスとして、MySQLを起動するかの確認です。起動しておけば、毎回起動してやる手間が省けますので、何も変更せずに[Next]をクリックした方が良いでしょう。
Windows側の設定変更やデータベースの初期化など、処理内容の一覧が表示されますので、確認して[Execute]をクリックすれば、各種設定処理が開始します。
すべての項目にチェックが付いていれば、問題なく設定も完了ですので、[Finish]をクリックすれば、MySQLのインストールは完了となります。
なお、このあと、他に設定するものがあれば、「Product Configuration」の画面に戻りますが、MySQL Serverの設定が完了していれば他の設定は不要ですので、[Cancel]をクリックしてください。
環境変数の設定
最後に、環境変数にMySQLの実行ファイルmysql.exeの場所を設定するのを忘れないようにしましょう。
「スタートメニュー」-「設定」-「システム」を表示し、左のメニューの一番下にある「バージョン情報」を選択します。
バージョン情報の右の一番上にある「システム情報」をクリックすれば、システムの画面が表示されますので、その左のメニューの「システムの詳細設定」をクリックして、[環境変数]から、設定することができます。
なお、mysql.exeファイルは、Windowsのインストールドライブの「Program Files\MySQL\MySQL Server 8.0\bin」にありますので、環境変数の「PATH」に設定してください。(システムでもユーザーでもかまいません)
念のため、コマンドプロンプトでmysqlのバージョンを確認してみましょう。
[bash]> mysql –version
mysql Ver 8.0.13 for Win64 on x86_64 (MySQL Community Server – GPL)
[/bash]
バージョンが表示されれば、mysqlのインストールは成功です。
DMM WEWBCAMPについて
DMM WEBCAMPは3ヶ月間で未経験から即戦力エンジニアを育成する転職保障付きのプログラミングスクールです。1ヶ月でプログラミング・Webデザインを学ぶ通い放題の「ビジネス教養コース」も展開しています。
DMM WEBCAMPを運営する株式会社インフラトップ では、「学びと仕事を通して人生を最高の物語にする」という理念で会社を経営しています。
キャリアアップを目指す方は、この機会に私達と一緒にプログラミングを学んでみませんか?