LoginSignup
23
20

More than 1 year has passed since last update.

【Docker】Docker+Railsコンテナ構築時のMYSQLエラー

Last updated at Posted at 2019-09-24

こんばんは!ポートフォリオの作成にあたり、Docker+Railsコンテナ構築時にUnknown MySQL server host ‘mysql’エラーが発生してなかなか解決しなかったので備忘として。

参考

DOCKER+RAILSコンテナ構築時のUNKNOWN MYSQL SERVER HOST ‘MYSQL’エラー
https://www.somuriengineer.com/2019/02/12/dockerrails%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E6%A7%8B%E7%AF%89%E6%99%82%E3%81%AEunknown-mysql-server-host-mysql%E3%82%A8%E3%83%A9%E3%83%BC/

丁寧すぎるDocker-composeによるrails + MySQL on Dockerの環境構築(Docker for Mac)
https://qiita.com/azul915/items/5b7063cbc80192343fc0

上記のQittaですごく丁寧にDocker for Macの環境構築は記載されていますので割愛。

ハマったエラー

$ docker-compose run web rails db:create

しようとしたら、

スクリーンショット 2019-09-24 21.08.45.png

or

Access denied for user ‘hoge’@’localhost’ to database ‘mysql’

原因追求

どちらかのファイルが悪いはず...

作業ディレクトリ/docker-compose.yml
version: '3'
services:
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: ****** <= 任意のパスワード
      MYSQL_DATABASE: root
    ports:
      - "3306:3306"

  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/app_name
    ports:
      - "3000:3000"
    links:
      - db
作業ディレクトリ/config/database.yml
default: &default
  adapter: mysql2
  encoding: utf8
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password: password # docker-compose.ymlのMYSQL_ROOT_PASSWORD
  host: db # docker-compose.ymlのservice名

links:database:mysqlとしてみたり、rootにしてみたり、dbに戻したり、host:も同様に変更してみたり、結局はUnknown MySQL server host ‘mysql’もしくは Access denied for user ‘hoge’@’localhost’ to database ‘’

以前にawsで本番環境構築していた時にもmysqlに苦しめられたので苦い思い出...

その時は確かroot権限からアクセス許可を行ったはず。ただそんな難しいエラーじゃないような気がする...

解決方法

参考にした記事に恐らくですが、Dockerの古いイメージが残ってしまい、そちらを参照し続けてしまったことなどが原因かと思います。と。チームメンバーがこれと似たような事を言っていた事を思い出す(dockerの環境構築ではなく、aws設定時にmysqlでエラーしていた際の話)

以下コマンドでは、可動していないものも含め全てのDockerイメージを削除します。

作業ディレクトリ
$ docker stop $(docker ps -q)
$ docker rm $(docker ps -aq)
$ docker rmi $(docker images -q)

「これで、もう一度挑戦!」

Docker起動

作業ディレクトリ
$ docker-compose build # コンテナをビルド
$ docker-compose up # コンテナの一斉起動

DB作成

$ docker-compose run web rails db:create
Starting portfolio_db_1 ... done
Created database 'app_name_development'
Created database 'app_name_test'

「お、怒られないぞ!いけたかも!」

ブラウザでlocalhost:300にアクセスしてサーバーの起動を確認する

スクリーンショット 2019-09-24 21.32.33.png

「いけたー!」

まとめ

2019年10月中旬から開始する転職活動へ向けてポートフォリオの作成を開始したので、その都度ハマった部分を備忘録として記事にまとめていこうと思います。次は本番環境へデプロイします。

終わり

23
20
1

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
23
20