2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

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 をすると正常に起動する。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?