データベースとの接続(MySQL編)

2012/01/29

『改訂新版 基礎Ruby on Rails』 読者サポートページ > Rails本番環境構築ガイド

以下、MySQLをインストールして、Railsアプリケーションから接続するまでの手順を示します。

この文章の内容は、随時更新しています。最終更新日: 2012/05/06

リモートマシンにsudo権限を持つユーザーでSSH接続し、コマンドを順に実行してください。なお、% はコマンドプロンプト、$ はMySQLモニターのプロンプトを示します。これらの文字は入力しないでください。

MySQLサーバのインストール

CentOS 6.2

% sudo yum install -y mysql-server mysql-devel 

2012年1月29日現在、バージョン5.1.52がインストールされます。

Ubuntu Server 12.04/10.04 LTS

% sudo apt-get install mysql-server libmysqlclient-dev

2012年5月6日現在、Ubuntu Server 12.04 LTSではMySQLバージョン5.5.22がインストールされます。Ubuntu Server 10.04 LTSではMySQLバージョン5.1.41がインストールされます(2012年1月29日現在)。途中でrootユーザーのパスワードを入力するように促されますが、いったん何も入力せずにEnterキーを押して次に進んでください。後で設定します。

MySQLサーバのセットアップ

セットアップ作業の前にrootユーザーとasagaoユーザーのためのパスワードを決めてください。mkpasswdコマンドを使って強いパスワードを作るとよいでしょう。ここでは、次の2つを使うことにします。

  • gnDwPsFVM5kMU (root)
  • diiNv2bid4aTI (asagao)

念のためこれらのパスワードは /root ディレクトリに記録しておきましょう。

% sudo -s
% echo "gnDwPsFVM5kMU" > /root/mysql_root_password
% echo "diiNv2bid4aTI" > /root/mysql_asagao_password
% chmod 400 /root/mysql_*_password
% exit

MySQLを初期化します。

% sudo mysql_install_db

MySQLサーバの起動および自動起動設定(CentOSのみ)

% sudo service mysqld start
% sudo chkconfig mysqld on

Ubuntuの場合は、初期化後に起動し、自動起動の設定も済んでいます。なお、Ubuntuの場合はサービス名がmysqldではなくmysqlです。停止・再起動の時に気をつけてください。

データベースおよびユーザーの作成

mysql -u root コマンドでMySQLモニターを開きます。

$ show databases;

に対して、次のような結果が出れば接続成功です。

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
+--------------------+
3 rows in set (0.00 sec)

OSやMySQLのバージョンによって初期状態で存在するデータベースのリストが異なります。少なくともinformation_schemaとmysqlがあればOKです。

rootユーザーのパスワードを変更します。

$ SET PASSWORD FOR 'root'@'localhost' = PASSWORD('gnDwPsFVM5kMU');

asagao_productionデータベースを作り、asagaoユーザーに全権を与えます。

$ CREATE DATABASE asagao_production DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
$ GRANT ALL ON asagao_production.* TO 'asagao'@'localhost';
$ SET PASSWORD FOR 'asagao'@'localhost' = PASSWORD('diiNv2bid4aTI');

MySQLモニターを抜けます。

$ quit

データベース接続の切り替え

% sudo su - rails
% cd asagao

エディタで Gemfile を開き、

gem "sqlite3"

gem "mysql2"

に変更します。そして、Bundlerでmysql2ライブラリをインストールします。

% bundle install

続いて、エディタで config/database.yml を開き、

production:
  adapter: sqlite3
  database: db/production.sqlite3
  pool: 5
  timeout: 5000

という部分を削除して、代わりに次のコードを書き入れます。

production:
  adapter: mysql2
  database: asagao_production
  username: asagao
  password: diiNv2bid4aTI
  host: 127.0.0.1
  encoding: utf8
% RAILS_ENV=production rake db:schema:load
% RAILS_ENV=production rake db:seed

Railsアプリケーションの再起動

% touch tmp/restart.txt

目次