Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

MySQLのrootにパスワードを設定した後、rails sができない問題を解決する方法

More than 1 year has passed since last update.

MySQLにrootパスワードを設定した後に、rails sをしようとするとMySQLにアクセスする事が出来ずに、下記の様なエラーが発生した。

スクリーンショット 2019-05-31 20.05.56.png

こらはパスワードがMysqlにアクセスするパスワードを設定していないが為に起こるエラー。
つまりdatebase.ymlファイル内のpassword:に値を入力することでエラーが解消できる。

1.まずはconfig/database.ymlを開く

config/database.yml
default: &default
  adapter: mysql2
  encoding: utf8
  pool: 5
  username: root
  password:
  socket: /tmp/mysql.sock

ここで注意しなければいけない事はdefaultのpasswordを直接入力してしまうケース。
defaultのpassword:に直接自分のパスワードを書いてしまうと、誤ってGitHubにコミット、プッシュした時に自分のパスワードを悪用されてしまう危険性があります。
その為、このケースではパスワードの代わりに環境変数と呼ばれるものを使用します。
環境変数とはコンピュータ自体が持てる変数のようなものです。

・やってはいけない例

config/database.yml
default: &default
  adapter: mysql2
  encoding: utf8
  pool: 5
  username: root
  password: あなたのMySQLのrootパスワード(例:aiueo1234)
  socket: /tmp/mysql.sock

・正しい例

config/database.yml
default: &default
  adapter: mysql2
  encoding: utf8
  pool: 5
  username: root
  password: <%= ENV['MYSQL_PASSWORD'] %>
  socket: /tmp/mysql.sock

この様にpasswordに<%= ENV['MYSQL_PASSWORD'] %>を記入することで、環境変数を利用する下準備が出来ました。
残りは肝心の環境変数自体をターミナルで定義するだけです!

・手順

1..ターミナルを開きホームディレクトに移動
 $ cd ~

2.vim .bash_profileを開く
 $ vim .bash_profile

enterを押して画面が切り替わったら
1.[i]を押してインサートモード入り
2.export MYSQL_PASSWORD='あなたのMySQLのrootパスワード'
を入力
3.Escキーを押してインサートモード終了
4.[:wq]と入力して保存&終了

上記の手順は 2. でデータベースのパスワードをbash_profileで定義する事でdatabase.ymlから呼び出せる様になるという事です。

そして最後にbash_profileは、

ターミナルを開き直すか、sourceコマンドで更新しないと反映されないという性質がある 為、最後にターミナルを開き直すか、以下のコマンドを入力する。

$ source ~/.bash_profile 

これで設定が反映されたので rails s をすると正常に起動する。

Panzo_webengineer
未経験からエンジニア転職をするために勉強中です 。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away