質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

1回答

2537閲覧

localhostに入ろうとすると、Mysql2::Error::ConnectionError Access denied for user 'b4b916199e40e7'@'ip-10-0-12

makobe

総合スコア7

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2020/09/15 12:16

編集2020/09/16 05:50

rails勉強中なのですが、開発途中でherokuにデプロイしたあとlocalに戻って開発しようとすると、こちらが出る様になっていました。

Mysql2::Error::ConnectionError Access denied for user 'b4b916199e40e7'@'ip-10-0-12

イメージ説明

Dockerを利用しているので、
docker-compose exec db mysql -u root -p
でmysqlにログインは出来るのですが、ここからどの様に解決にむけて動けばいいのかが分かりません。
まずb4b916199e40e7'@'ip-10-0-97-237.ec2.internalがどこから出てきたものなのか理解できていません。

今後は'b4b916199e40e7'@'ip-10-0-97-237.ec2.internal' に権限を与える方向で解決を目指すのか、
もしくはログインしているユーザーをrootなどに変更する方向で解決を目指して行けば良いのでしょうか。

宜しくお願い致します。

追記

docker-compose.yml

version: '3' services: app: build: context: . env_file: - ./environments/db.env command: bundle exec puma -C config/puma.rb ports: - 3000:3000 volumes: - .:/webapp - tmp-data:/webapp/tmp - log-data:/webapp/log depends_on: - db environment: - "SELENIUM_DRIVER_URL=http://selenium_chrome:4444/wd/hub" db: image: mysql:5.7 env_file: - ./environments/db.env volumes: - db-data:/var/lib/mysql web: build: context: containers/nginx volumes: - ./public:/webapp/public - tmp-data:/webapp/tmp ports: - 80:80 depends_on: - app selenium_chrome: image: selenium/standalone-chrome-debug logging: driver: none volumes: tmp-data: log-data: db-data:

Dockerfile

FROM ruby:2.5.1 RUN apt-get update -qq && \ apt-get install -y build-essential \ nodejs \ imagemagick RUN mkdir /webapp WORKDIR /webapp ADD Gemfile /webapp/Gemfile ADD Gemfile.lock /webapp/Gemfile.lock RUN bundle install ADD . /webapp RUN mkdir -p tmp/sockets

database.yml

default: &default adapter: mysql2 encoding: utf8 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: <%= ENV.fetch('MYSQL_USER') { 'user_name' } %> password: <%= ENV.fetch('MYSQL_PASSWORD') { 'user_password' } %> host: db development: <<: *default database: webapp_development test: <<: *default database: webapp_test

追記
/private/etc/hosts

## # Host Database # # localhost is used to configure the loopback interface # when the system is booting. Do not change this entry. ## 127.0.0.1 localhost 255.255.255.255 broadcasthost ::1 localhost # Added by Docker Desktop # To allow the same kube context to work on the host and the container: 127.0.0.1 kubernetes.docker.internal # End of section

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_shinoda

2020/09/15 13:15

docker-compose.yml, Dockerfile, config/database.yml を質問欄に次の記法で追記お願いします: ``` (ここにコードを記載) ```
makobe

2020/09/15 15:11

追記依頼ありがとうございます。 ご確認いただければと思います。 宜しくお願い致します。
guest

回答1

0

ベストアンサー

追記

エラーが表示されたとき、
本当に localhost の web サービスから MySQL にアクセスしているか確認してみてください

例えば:

  • ブラウザーのアドレスバーが localhost になっていることの確認
  • ページにアクセスしたとき Docker Compose の web サービスのログが追加されることの確認

'@'ip-10-0-120-40.ec2.internal と表示されているということは、
EC2 インスタンス (Heroku Dyno のバックエンドの AWS の仮想サーバー)
から MySQL にアクセスしている可能性があります

元の回答

./environments/db.env が次の条件を満たした設定となっているかを確認しましょう

1
MYSQL_ROOT_PASSWORD が設定されていること

2
MYSQL_USERroot 以外で設定されていること

3
MYSQL_PASSWORD が設定されていること

参考: mysql - Docker Hub

ただし、環境変数を修正する場合は、
変更後、 MySQL に設定を反映させるために
MySQL サービスをボリュームごと削除してから再度サービスを起動する必要があります:

console

1docker-compose rm -v db 2docker-compose up

投稿2020/09/15 15:34

編集2020/09/16 03:19
y_shinoda

総合スコア3272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

makobe

2020/09/15 16:38

ご回答いただきましてありがとうございます。 確認した所3点とも設定されており、このパスワードでログイン出来る様になっております。
y_shinoda

2020/09/16 03:20

回答を修正しました
makobe

2020/09/16 05:05 編集

ご指摘いただいた通り、EC2 インスタンスからアクセスしている気がします。 何故かherokuへのデプロイに苦労してごちゃごちゃやってしまっていたので... アドレスバーはlocalhostと入力していましたが、 ページにアクセスしたときのDocker Compose の web サービスのログが追加されていませんでした。 localhostのwebサービスからアクセスされる様に設定すればいいということですね。
y_shinoda

2020/09/16 04:39

可能性のひとつとして、 例えば hosts の設定を行った場合は元に戻す必要があります https://oku-log.com/blog/mac-hosts/ ただし、このことにとらわれず、あらゆる可能性を考えて 行った作業を思い出してみてください
makobe

2020/09/16 05:48

教えていただいた記事を拝見しました。 特にいじった記憶がありませんが、これはどこか問題がありますか。 本文に追記致しましたのでご確認いただけますでしょうか。 その他の可能性も探ってみます。
y_shinoda

2020/09/16 06:18

確認しました、おそらく hosts の設定ではなさそうです あとは、あまり力になれなさそうですが、 色々切り分けてみると良いと思います 例えば、ブラウザーを変えてみる、コンテナーを停止した状態でアクセスしてみる、などです
makobe

2020/09/16 06:46

ご確認いただきましてありがとうございます。 ブラウザ・コンテナ試してみましたが症状変わらずでした。 いろいろ試してみます。
makobe

2020/09/17 12:28

こちら解決できました。 googlemap APIの環境変数をherokuに渡す時に、.envファイルに書いてheroku config:push してheroku config:pull もしており、 その際に以下の記述が.envに入ってしまっておりそれが原因となっていました。。 DATABASE_URL="mysql2://b4b916199e40e7:9db7bd13@us-cdbr-east-02.cleardb.com/heroku_140dc5c281feb84?reconnect=true" これを削除してdockerを立ち上げ直したら、localhostにアクセス出来る様になりました。 ご協力いただきましてありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問