読者です 読者をやめる 読者になる 読者になる

5分でRailsアプリにMySQLを導入

f:id:sksksksksk:20170510232333p:plain

RailsアプリにMySQLを導入します。


サンプルコード
https://github.com/sagaekeiga/MySQL

MySQL2のインストー

gem 'mysql2'
bundle

MySQLの起動

mysqlを起動します。

$ mysql-ctl start

初期設定とデータベース・テーブルの作成

$ SET PASSWORD FOR 'root'@'localhost' = PASSWORD('パスワード'); #rootユーザーのパスワードを変更

$ CREATE DATABASE データベース名 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci; #データベースの作成

$ GRANT ALL ON データベース名.* TO 'ユーザー名(任意)'@'localhost'; #ユーザー(任意)にデータベースの権限をrootユーザーから移譲

$ SET PASSWORD FOR 'ユーザー名(任意)'@'localhost' = PASSWORD('パスワード'); #ユーザー(任意)のパスワードをセット

・パスワードは任意です。最初のパスワードはrootユーザーのパスワードです。二番目のパスワードは新規で作成したユーザーのパスワードです。

・データベース名はなんでも構いません。わかりやすいものをつけましょう。

以下、補足です。

$ show databases; #データベース確認コマンド
$ SHOW TABLES; #テーブル確認コマンド
$ select user,host from mysql.user; #登録ユーザーの状況確認コマンド

私は以下のように設定しました。

$ mysql -u root#rootユーザーでログイン

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('s19930528');

mysql>CREATE DATABASE sample_database DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;                                                    

mysql> GRANT ALL ON sample_database.* TO 'sample'@'localhost';                                                                                            

mysql> SET PASSWORD FOR 'sample'@'localhost' = PASSWORD('secret');                                                                               

mysql> quit

アプリ側の設定

mysqlの準備は整いましたので、アプリ側の設定に移ります。

mysqlとアプリを連携させる為にはdatabase.ymlを設定する必要があります。



/config/database.yml

----削除----
default: &default
  adapter: sqlite3
  pool: 5
  timeout: 5000
----削除----

development:
    adapter: mysql2
    encoding: utf8
    database: sample_database
    username: sample
    host: localhost
    password: secret
    socket: /var/run/mysqld/mysqld.sock

test:
    adapter: mysql2
    encoding: utf8
    database: sample_database
    username: sample
    host: localhost
    password: secret
    socket: /var/run/mysqld/mysqld.sock

mysqlで設定した内容を反映させます。

ここで重要なのはmysql.sockの指定です。

mysql.sockの場所は以下のコマンドで確認できます。
mysqlからでた状態でコマンドを実行してください。

$ mysql_config --socket
/var/run/mysqld/mysqld.sock

アプリを作成し、接続できたかを確認

$ rails g model post title:text content:text
$ rake db:migrate

/db/seed.rb

Post.create!(title:  "テスト",
             content: "テスト")
$ rake db:seed
$ rails c
2.3.0 :001 > Post.all
  Post Load (0.4ms)  SELECT `posts`.* FROM `posts`
 => #<ActiveRecord::Relation [#<Post id: 1, title: "テスト", content: "テスト", created_at: "2017-05-08 11:06:37", updated_at: "2017-05-08 11:06:37"

できました!




///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
製作物を発信できるアプリを公開したのでよかったら使ってください。
http://ruppish.com/
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////