5分でRailsアプリにMySQLを導入
サンプルコード
https://github.com/sagaekeiga/MySQL
初期設定とデータベース・テーブルの作成
$ 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"
できました!