Railsでデータベースを設定する（MySQL）＊メモVer.

railsでデータベースを設定する方法

MySQL接続用アカウント作成 → アカウントに権限を付与 → database.ymlの編集　→ データベースの作成 → サーバー起動

Railsのバージョンは

```
~ % rails -v
  Rails 5.2.6

~ % bundle -v
  Bundler version 1.17.2
```

今回は、myappディレクトリを作成し、その中でapiアプリケーションを作成しています。

```
~ % cd myapp

myapp % rails new api --database=mysql --skip-bundle --api
	 
myapp % cd api

api % bundle install
```

###MySQL接続用アカウント作成

```
api % mysql -u root -p
```

パスワードを入力

```
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.35 Homebrew
```
MySQL接続用のユーザー名・パスワードを指定しアカウントを作成

```
mysql> create user 'ユーザー名'@'localhost' identified by ‘パスワード’;
```

アカウントが作成されているか確認

```
mysql> select User,Host from mysql.user;
+---------------+-----------+
| User          | Host      |
+---------------+-----------+
| mysql.session | localhost |
| mysql.sys     | localhost |
| root          | localhost |
| {ユーザー名}    | localhost |
+---------------+-----------+
4 rows in set (0.01 sec)
```



###アカウントに権限を付与

```
mysql> grant all on *.* to 'ユーザー名'@'localhost';
Query OK, 0 rows affected (0.01 sec)
```

###database.ymlの編集
設定したユーザー名・パスワードを項目に入力

```config/database.yml
# 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: {ユーザー名}
  password: {パスワード}
  host: localhost

development:
  <<: *default
  database: api_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: api_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: api_production
  username: api
  password: <%= ENV['API_DATABASE_PASSWORD'] %>
```

###データベース作成

```
api % rails db:create
Created database 'api_development'
Created database ‘api_test'
```

###Railsサーバー起動

```
rails s
```


サーバーを起動した際、
`Error: (<unknown>): could not find expected ':' while scanning a simple key at line 17 column 3>`
あるいは、
`Error: (<unknown>): mapping values are not allowed in this context at line 22 column 11>`
のようなエラー文が出た場合、database.yml内で編集した部分のインデントやスペースがズレている可能性があります。

起動できれば完了。