はじめに
RailsのdefaultのDBはSQLiteです。✌︎
後から変更する方法
私はrailsアプリを作成して、後からDBをMySQLにしたい!ってことが多かったので
「後から変更する方法」を先に書きます。🐹
gem mysql2インストール
Gemfileに"gem 'mysql2'"を追記
gem 'mysql2'
↓
database.yml
の
development: のところを以下のように書きます。
$ bundle install --without production
↓
bundle showでinstallされたgemfileが確認できます。
新規DB作成
databaseをmysql2に新しく変更したので、新規のdatabaseを作成します。
$ bundle exec rake db:create
↓
モデルを作成します。
(同時にマイグレーションファイルも作成されます。※まだmodel/migrationファイルを作成していなかったら行います)
$ bundle exec rails g model User name:string email:string
↓
マイグレートします。
$ bundle exec rake db:migrate
簡単!
たぶんこれでいけるはず。私はこれでできました。
Sequel-proから見る
Sequel-proを開きます
↓
新規作成(+のところ)
↓
以下のように書きます。
↓
接続をテストします
↓
「保存」
↓
「接続」
↓
左上の「データベースを選択…」でdatabase.ymlに記入したdatabase名を選択します
↓
完了です!
初めから変更する方法
初めから変更する方法は、ほかにも紹介している記事が何個かあったので、
色々見回って一番良い感じにしてみたです。
まず、rails newでアプリを作成します。
$ rails new アプリケーション名 -d mysql
or
$ rails new アプリケーション名 --database=mysql //これでデフォルトDBMSがMySQLへ変わる
データベース設定ファイルの「config/database.yml」ファイル
development(開発用)、test(テスト用)、production(本番用)の3つに分かれています。
adapter: 使用するデータベース種類
encoding: 文字コード
reconnect: 再接続するかどうか
database: データベース名
pool: コネクションプーリングで使用するコネクションの上限
username: ユーザー名
password: パスワード
host: MySQLが動作しているホスト名
MySQLの場合は特にホスト名、ユーザー名、パスワードの指定が必要です。ユーザー名はデフォルトで「root」になっていますが、データベース作成の権限があるユーザーをあらかじめMySQLに作成しておき、そのユーザー名とパスワードを指定しても結構です。
MySQLのユーザー作成
まずrootユーザーでMySQLにログインします。
mysql -u root -p
これでできなかったら、これで!
mysql -u root
作業ユーザーを作成:ユーザー名とパスワードを指定
「;」を最後につける。
create user 'ユーザー名'@'localhost' identified by 'パスワード1';
複数のユーザーをまとめて追加する場合は、次の書式を使用して下さい。
CREATE USER user1 IDENTIFIED BY [PASSWORD] 'password1',
user2 IDENTIFIED BY [PASSWORD] 'password2',
user3 IDENTIFIED BY [PASSWORD] 'password3', ...;
作成したユーザーの確認は以下のコマンドで確認できます。
mysql> select User,Host from mysql.user;
+-----------+-----------+
| User | Host |
+-----------+-----------+
| mysql.sys | localhost |
| rena | localhost |
| root | localhost |
+-----------+-----------+
3 rows in set (0.00 sec)
以下のコマンドで作成したユーザーに権限を付与します。
グローバルレベルでALL権限を付与してあります。
mysql> grant all on *.* to '[ユーザー名]'@'localhost';
データベース設定ファイルの「config/database.yml」ファイルの書き換え
「{RailsRoot}/config/database.yml」を開きます。
# コメント略
development:
adapter: mysql2
encoding: utf8
reconnect: false
database: [アプリ名]_development
pool: 5
username:設定したユーザー名
password:設定したパスワード
host: localhost
test:
adapter: mysql2
encoding: utf8
reconnect: false
database: [アプリ名]_test
pool: 5
username:設定したユーザー名
password:設定したパスワード
host: localhost
production:
adapter: mysql2
encoding: utf8
reconnect: false
database: [アプリ名]_production
pool: 5
username:設定したユーザー名
password:設定したパスワード
host: localhost
development、test、productionの項目をそれぞれ書き換えます。
上で作成した作業ユーザーのユーザー名、パスワードをそれぞれ「username」と「password」の所に書いてください。
ご自身の環境に合わせて「host」を変更し、また必要であれば「database」も変更しておいて下さい。
databaseの名前はデフォルトのままでも大丈夫ですが、必要とあれば書き換えてください。
これでOKのはず
適当にテストしたい方は以下のようにscaffold使って試してみると良いでしょう。
$ rake db:create
$ rails g scaffold home name:string body:text email:string
or なにか作成する
$ rails g model user name:string body:text email:string
$ rake db:migrate