1
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 3 years have passed since last update.

capistrano導入時DBアクセスでエラーになる(Mysql2::Error::ConnectionError: Access denied for user 'ec2-user'@'localhost' (using password: No))

Last updated at Posted at 2021-10-28

#はじめに
EC2を使ってAWSにデプロイをする際に環境変数をまとめておく場所として利用しました。

ここでエラー多発して1ヶ月くらい解決できなかった事があったので復習としてまとめます。

DBへアクセスする情報の受け渡し

DBへアクセスする情報(ユーザー名やパスワード等)をdatabase.ymlへ直接記入すると問題があるので、環境変数で情報の受け渡しをしました。

最初はdotenv-railsを導入して.env内に記述しました。

.env
SECRET_KEY_BASE=シークレットキー

DB_NAME= データベース名
DB_USERNAME= root 
DB_PASSWORD= 0000
DB_HOSTNAME= ap-northeast-1.rds.amazonaws.com 

上記のように記述し、capistranoのbundle exec cap production deployをした所、私の記述方法に誤りがあったのかエラーとなりました。

Mysql2::Error::ConnectionError: Access denied for user 'ec2-user'@'localhost' (using password: No)

記事を調べてcredentials.yml.encを知りました。

ターミナル内で

 $ EDITOR="vi" bin/rails credentials:edit 

する事でファイルが開きます。
そこに環境変数を記述しました。

# User as the base secret for all MessageVerifiers in Rails, including the one protecting cookies.
secret_key_base: 00000000000

db:
 NAME: データベース名
 USERNAME= root 
 PASSWORD= 0000
 HOSTNAME= ap-northeast-1.rds.amazonaws.com 

escキー :wqで完了。

その後、VScord内のdatabase.ymlに下記を記述します。

config/database.yml
production:
  <<: *default
  database: <%= Rails.application.credentials.db[:NAME] %>
  username: <%= Rails.application.credentials.db[:USERNAME] %>
  password: <%= Rails.application.credentials.db[:PASSWORD] %>
  host: <%= Rails.application.credentials.db[:HOSTNAME] %>
  socket: /var/lib/mysql/mysql.sock

そして最後にcapistranoのbundle exec cap production deployをすると自動デプロイが成功しました。

おわり

VScord内で直接書き込んでcredentials.ymlをおかしくしてしまったりして削除していいのかどのように編集すればいいのか調べて時間がかかりました。

参考

AWSデプロイで参考にさせて頂いた記事

credentialsで参考にさせて頂いた記事

DB設定で参考にさせて頂いた記事

1
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
1
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?