Ruby on RailsからMySQLにアクセスする

Ruby on RailsのデフォルトデータベースはSQLiteですが、本格運用するとなるとあまりにも貧弱なので、MySQLを使うことにします。

MySQL対話モードでの作業

これからMySQLに作ろうとするデータベース(mydb)に対して、権限を付与します。

$ mysql -u root -p
Enter password:
mysql> GRANT ALL PRIVILEGES ON mydb.* TO 'solima'@'localhost' IDENTIFIED BY 'password';

※備考
mydbは、データベース名。
solimaは、MySQLのユーザー名。
localhostは、ホスト名。
passwordは、MySQLのパスワード。

ヘッダーファイルのインストール

これをインストールしておかないと、mysql2 gemのインストールでエラーになります。

Ubuntuの場合
$ sudo apt-get install libmysqld-dev

Ruby環境に対する作業

MySQLアダプターのインストール。

$ sudo `which gem` install mysql2 --no-ri --no-rdoc

Railsアプリケーションごとの作業

Gemfileの修正。

gem 'sqlite3' # この行の下に追加する。
gem 'mysql2'                                                                    

バンドルインストールします。

$ bundle install

config/database.ymlを以下のように修正します。

development:
# 修正前
#  <<: *default
#  database: db/development.sqlite3
  adapter: mysql2
  encoding: utf8
  database: mydb2
  pool: 5
  username: solima
  password: password
  socket: /tmp/mysql.sock # MySQLをソースインストールしたとき
  # socket: /var/lib/mysql/mysql.sock # CentOSにMySQLをパッケージインストールしたとき
  # socket: /var/run/mysqld/mysqld.sock # UbuntuにMySQLをパッケージインストールしたとき
  # socket: /var/lib/mysql/mysql.sock # Vine LinuxにMySQLをパッケージインストールしたとき

※備考
ここでは、開発環境のデータベース(development)をSQLiteからMySQLに変更しています。

※注意
database:で指定したデータベースが存在すると、エラーになります。

MySQLデータベースにデータベースとテーブルを作成します。

$ rake db:create RAILS_ENV=development
$ rake db:migrate RAILS_ENV=development
Linuxプログラミング環境インストール物語 © 2016 Frontier Theme