さくらのVPS

さくらのVPS-Ruby on RailsとMariaDBを連携させる

railsのインストールが終わったので、今回は、先日インストールしたMariaDBをrailsと連携させる。
参考)Ruby on Rails 5.0 でMariaDBを扱う
https://qiita.com/MariMurotani/items/a34878916fcabfc3c638

やること

1.ソフトウェアのインストール
2.MariDB接続設定
3.MariaDBの確認

1.ソフトウェアのインストール
必要ソフトウェア
MariaDB ⇒インストール済み
gemのmysql2

gemのmysql2のインストール
Gemfileに追記

# cd アプリフォルダ
# vim Gemfile
・
# MariaDB
gem 'mysql2'

2行追加(#MariaDBはコメント)し、:wq!で保存する。

バンドルインストール実行

# bundle install --path vendor/bundle
・
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
・
-----
mysql client is missing. You may need to 'apt-get install libmysqlclient-dev' or
'yum install mysql-devel', and try again.
-----
・
An error occurred while installing mysql2 (0.5.1), and Bundler cannot
continue.
Make sure that `gem install mysql2 -v '0.5.1' --source 'https://rubygems.org/'`
succeeds before bundling.

In Gemfile:
  mysql2

エラーが発生した・・・

エラーの内容やWEBで調べたところ、
この部分を解決しないといけない模様
mysql client is missing. You may need to 'apt-get install libmysqlclient-dev' or
'yum install mysql-devel', and try again.

yum install mysql-devel'を実行してみる。

# yum install mysql-devel
・
Is this ok [y/d/N]: y
・
Installed:
  mariadb-devel.x86_64 1:5.5.56-2.el7

Complete!

Complete!と出たので成功!

mariadb-devel.x86_64 1:5.5.56-2.el7
がインストールされたみたい。
mariadb-develって何なのかなあと思ったら、
develとついているものは、開発環境で使うファイルも含んだもののようです。
よくわからないですが。。。
初心者の僕のイメージとしては、develなしのものと同じものだけど、
プログラムのコメントのようにそのアプリの内容を確認しやすくするファイルも同梱してますよという意味かなあと思いました。

再度バンドルインストール

# bundle install --path vendor/bundle
・
Bundle complete! 18 Gemfile dependencies, 74 gems now installed.
Bundled gems are installed into `./vendor/bundle`

エラーなく完了!

次に、Gemfileより「gem 'sqlite3'」をコメントアウトして、
バンドルインストールする。

# vim Gemfile
#gem 'sqlite3'

#を頭につける。

バンドルインストール実行

# bundle install --path vendor/bundle
・
Bundle complete! 17 Gemfile dependencies, 73 gems now installed.
Bundled gems are installed into `./vendor/bundle`

前回

Bundle complete! 18 Gemfile dependencies, 74 gems now installed.

と比べて
今回

Bundle complete! 17 Gemfile dependencies, 73 gems now installed.

数字が1つ減った。

2.DB接続設定

railsがMariaDBを使用する設定をする。
デフォルトではSQLite3を使用している。

# vim config/database.yml

もともとのconfig/database.ymlの中身

# SQLite version 3.x
#   gem install sqlite3
#
#
#   Ensure the SQLite 3 gem is defined in your Gemfile
#   gem 'sqlite3'
#
default: &default
  adapter: sqlite3
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  timeout: 5000

development:
  <<: *default
  database: db/development.sqlite3

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  <<: *default
  database: db/test.sqlite3

production:
  <<: *default
  database: db/production.sqlite3

変更後

# SQLite version 3.x
#   gem install sqlite3
#
#   Ensure the SQLite 3 gem is defined in your Gemfile
#   gem 'sqlite3'
#
default: &default
  adapter: mysql2
  encoding: utf8
  pool: 5
  username: root
  password: *****
  timeout: 5000

development:
  <<: *default
  database: test001_development

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  <<: *default
  database: db/test001_test

production:
  <<: *default
  database: db/test001_production

黒太文字部分を変更。
test001の部分はアプリ名(アプリのフォルダ名)を記載する。
****はMariaDBのrootのパスワード
コメント部分(頭に#のついた行)はSQLiteの記述になっているが、動作に関係ないので一旦無視する。

データベースの作成

# rails db:create
Created database 'test001_development'
Created database 'db/test001_test'

成功!

MariaDBの確認

# mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

パスワードを入力する必要がある模様
Cloud9ではいらなかったのに、どこの設定が違うか不明

パスワードオプションを付ける(パスワードはMariaDB作成時に作ったユーザのパスワード)

# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 13
Server version: 5.5.56-MariaDB MariaDB Server

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

データベースの確認

MariaDB [(none)]> show databases;
+---------------------+
| Database            |
+---------------------+
| information_schema  |
| db/test001_test     |
| mysql               |
| performance_schema  |
| test001_development |
+---------------------+
5 rows in set (0.00 sec)

MariaDB [(none)]>

config/database.ymlに記載した
test001_development
db/test001_test

が作成されている。

これでrailsとMariaDBを連携できましたっ!

-さくらのVPS