微炭酸ログ

Ruby や Rails を中心に。

【Rails】MySQLをインストールしてRailsのwelcomeページまで

ローカルとherokuしか経験していないので、とりあえずMySQLRailsをやってみたかった(そもそもほとんどDBとかSQLとか触ったことないくせに…)。

色々試行錯誤して一応できたので、一旦MySQLをアンインストールしてもう一度。

 

<以下手順>

Xcodeのインストール

僕はインストールを手動でやりました。1回目やったときはこれが必須ということに気づけず(検索で見つかってたのに見逃してた)、長々とエラーと格闘しました…。

 

MySQLのインストール(Homebrewから)

brew update

brew install mysql

brew info mysql(インストール確認)

 

ちなみに

mysql.server start(MySQLの起動)

$ mysql -uroot(MySQLへの接続)

mysql> exit(接続切断)

mysql.server stop(MySQLの停止)

 

・アプリ作成

$ rails new アプリ名 -d mysql

 

MySQLユーザ作成

$ mysql.server start

$ mysql -uroot

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

 

・ユーザ情報を設定

config/database.ymlのusernameとpasswordを書き換える。

productionのとこ一応コメントアウトしたけど、どうすればよいかわかってません…。

# MySQL. Versions 5.1.10 and up are supported.
#
# Install the MySQL driver
# gem install mysql2
#
# Ensure the MySQL gem is defined in your Gemfile
# gem 'mysql2'
#
# And be sure to use new-style password hashing:
# https://dev.mysql.com/doc/refman/5.7/en/password-hashing.html
#
default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: name
password: password
host: localhost

development:
<<: *default
database: appname_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:appname_test

# As with config/secrets.yml, you never want to store sensitive information,
# like your database password, in your source code. If your source code is
# ever seen by anyone, they now have access to your database.
#
# Instead, provide the password as a unix environment variable when you boot
# the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
# for a full rundown on how to provide these environment variables in a
# production deployment.
#
# On Heroku and other platform providers, you may have a full connection URL
# available as an environment variable. For example:
#
# DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase"
#
# You can use this database configuration with:
#
# production:
# url: <%= ENV['DATABASE_URL'] %>
#
production:
<<: *default
database:appname_production
# username:appname
# password: <%= ENV['APPNAME_DATABASE_PASSWORD'] %>

 

・サーバ起動

mysql> exit

$ rails s

localhost:3000にアクセスしてみると以下のエラー

アクセス拒否とかなんとかかんとか。

Access denied for user 'name'@'localhost' to database 'appname_development'

 

・権限付与

$ mysql -uroot

mysql> GRANT ALL PRIVILEGES ON `appname_development`.* TO
-> 'name'@'localhost';

 

・再度挑戦

mysql> exit

$ rails s

localhost:3000にアクセスしてみると以下のエラー

知らないDB…。行けそうですね。

Unknown database 'appname_development'

 

・DB作成

$ rake db:create

エラー。appname_testには権限ないよ的な?

Mysql2::Error::ConnectionError: Access denied for user 'name'@'localhost' to database 'appname_test'

 

でもdevelopmentのDBは作成されたみたい。

$ rails s

localhost:3000にアクセスしてみると行けました。

Yay! You’re on Rails!

って言ってます(うれしい)。

 

herokuじゃなくてMySQLが使える本番環境にデプロイする場合についてはまだ全然わかってませんし、この後実装してローカルでもマイグレーションした後ちゃんと動くか心配ですね。明日やります。

 

 

 

<参考>

programmingnavi.com

 

qiita.com

 

www.dbonline.jp

 

www.dbonline.jp

 

www.dbonline.jp

 

作成したユーザで接続するには(初心者すぎてすみません)

コマンドラインから MySQL に接続する - MySQL 逆引きリファレンス

 

uxmilk.jp

 

DB作成コマンド

[Rails]rake dbコマンド一覧 - 戦うSEひろろのブログ