LoginSignup
1
0

More than 3 years have passed since last update.

[Rails,mysql,docker] Access denied for user 'user'@'host' (using password: YES)が出る問題

Posted at

はじめに

この記事はrails初学者が書いています。
間違いがあれば指摘してください。
よろしくお願いします。

状況

docker-composeでrailsサーバー、MySQLサーバーを立ち上げ、
rails db:createしようとしたら以下のエラーが出ました。

Access denied for user 'user'@'host' (using password: YES)

日本語に訳すと、「hostのuserからの接続が拒否されました。」みたいな感じですかね。

原因

docker-composeでvolumeを永続化しており、同名プロジェクトのデータが残っていたからです。

解決策

volumeを削除しましょう。

$ docker volume ls
DRIVER VOLUME NAME
local test-database
local test-bundle
...

$ docker volume rm test-database

あとは、今まで通りユーザーを作成し、権限を付与します。
<>で囲まれた部分を自分の環境に修正してください。

docker-compose exec db mysql -u root -p -e"CREATE USER '<username>'@'%' IDENTIFIED BY '<password>';GRANT ALL PRIVILEGES ON *.* TO '<username>'@'%';FLUSH PRIVILEGES;"

ちなみに

docker system pruneというコマンドがあり、使われていないイメージ、コンテナ、ネットワークを削除できます。
volumeは削除されません(ここ大事)
volumeも削除するときは--volumeをつけましょう。

最後に

せっかくdockerを使ってクリーンな環境を作っても
volumeを多用しすぎると意味がないので気をつけましょう。(戒め)

参考

【MySQL】Mysql2::Error::ConnectionError: Access denied for user ~への対処法【環境構築】
使用していない Docker オブジェクトの削除(prune)

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