0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

RailsのDBをmysqlに変える(メモ)

Last updated at Posted at 2020-12-04

RailsでデフォルトのDB'SQlite'から'mysql'(ver8.0.22)に変更する際に詰まったので、
mysqlインストールから実際にDB作成をするところまでの手順をメモ。

1.mysqlインストーラでmysqlをインストール。
http://dev.mysql.com/downloads/installer/
からインストーラをダウンロード。
mysqlインストーラ.PNG

2.ダウンロードしたインストーラを起動。
あとは流れに沿ってインストールしていく。(rootのパスワード設定等。)
そして、この流れの中で後にRailsからmysqlを起動しようとするとErrorになってしまう設定項目があった。それがこの設定。
Authenticate.png

ここで上の認証方式を選択してしまうと、認証方式が'caching_sha2_password'になるが、Railsではこの認証方式に対応していないらしい。(この認証方式はmysql8で使用可能。)
なので、下の設定を選択して認証方式を'mysql_native_password'にする必要があった。

3.gemファイルでmysqlをinstall。

Gemfile
# Use mysql as the database for Active Record
gem "mysql2"
bundel install

4.railsアプリケーションのDB設定

config/database.yml

default: &default
  adapter: mysql2
  encoding: utf8
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password:
  host: localhost
  timeout: 5000

development:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: <%= ENV['DATABASE_DEV_NAME'] %>
  pool: 5
  username: <%= ENV['DATABASE_DEV_USER'] %>
  password: <%= ENV['DATABASE_DEV_PASSWORD'] %>
  host: <%= ENV['DATABASE_DEV_HOST'] %>

# 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:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: アプリケーション名_test
  pool: 5
  username: root
  password: <%= ENV['DATABASE_TST_PASSWORD'] %>
  host: localhost

production:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: アプリケーション名_production
  pool: 5
  username: アプリケーション名
  password: <%= ENV['アプリケーション名_DATABASE_PASSWORD'] %>
  host: localhost

のように変更。

5.パスワードを環境変数で管理する。
dotenvというgemをinstall。

Gemfile
gem "dotenv-rails"
bundle install

アプリケーションのルートディレクトリに.envファイルを作成し、その中に環境変数を設定する。

.env
 DATABASE_DEV_NAME = 'アプリケーション名_development'
 DATABASE_DEV_PASSWORD = 'パスワードを記入'
 DATABASE_DEV_USER = 'MySQLユーザー名を記入'
 DATABASE_DEV_HOST = 'localhost'
 DATABASE_TST_PASSWORD = 'パスワードを記入'

.gitignoreファイルに.envを追加する。

.gitignore
# Ignore env config
/.env

※mysqlユーザを作成しておく。

ここで

rails db:create

完了。

※mysqlユーザを作成する。

1.mysqlに接続する。
コマンドプロンプトを管理者権限で開き、以下を実行する。

net start mysql80
mysql -u root -p

mysqlインストール時に設定したパスワードを入力。

2.実際にmysqlユーザを作成する。

mysql> create user 'test-user'@'localhost' identified by 'password';

3.mysqlユーザに権限を与える。

mysql> grant all on *.* to 'test-user'@'localhost';
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?