ねこものがたり

いちにちいっぽ

MySQLを指定したRailsアプリでrake db:createする前の手順

実践ruby on rails 4 現場のプロから学ぶ本格webプログラミングをやっていて引っかかったのでメモ。

起こったエラー

$ bin/rake db:create

Access denied for user 'root'@'localhost' (using password: YES)

database.ymlの内容

default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password: password
socket: /tmp/mysql.sock

手順

1.パスワードを生成してする

2.MySQLにアクセス権限を持つユーザーを追加する

3.database.ymlを変更する

1. パスワードを生成する

$ mysql
mysql> SELECT PASSWORD('mypass');
->
+-------------------------------------------+
| PASSWORD('mypass')                        |
+-------------------------------------------+
| *6C8989366EAF75BB670AD8EA7A7FC1176A95CEF4 |
+-------------------------------------------+

7/30追記 この1の操作はパスワードではなくハッシュの生成でした。手順としては1.は不要でした。教えてくださりありがとうございました!

2. MySQLにアクセス権限を持つユーザーを追加する

$ mysql
mysql> CREATE USER 'railsuser'@'localhost' IDENTIFIED BY 'mypass';
->Query OK, 0 rows affected (0.15 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'railsuser'@'localhost';
Query OK, 0 rows affected (0.01 sec)

3.database.ymlを変更する

default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: railsuser    //追加したユーザー
password: mypass   //先程のパスワード
socket: /tmp/mysql.sock

参考

Ruby on RailsでMySQLを使用する際に必要な作業手順

MySQL :: MySQL 5.6 リファレンスマニュアル :: 6.1.2.4 MySQL でのパスワードハッシュ