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の編集
設定したユーザー名・パスワードを項目に入力
# 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内で編集した部分のインデントやスペースがズレている可能性があります。
起動できれば完了。