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

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回答

420閲覧

mysqlのrootに接続しようとするエラーが出てしまう。

shunyaYoshimra

総合スコア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/07/08 02:12

編集2020/07/08 02:36

前提・実現したいこと

Docker環境でRailsアプリを作ろうとしており、mysqlを一般ユーザで操作したいので権限を与えようとしているのですが、rootに接続することができません。ご教示下さると助かります。

発生している問題・エラーメッセージ

$ docker-compose exec db mysql -u root -p -e"$(cat db/grant_user.sql)" Enter password: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

該当のソースコード

dbenv

1MYSQL_ROOT_PASSWORD=password 2MYSQL_USER=webapp 3MYSQL_PASSWORD=password

databaseyml

1default: &default 2 adapter: mysql2 3 encoding: utf8 4 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> 5 username: <%= ENV.fetch('webapp') { 'root' } %> 6 password: <%= ENV.fetch('password') { 'password' } %> 7 host: db 8 9development: 10 <<: *default 11 database: webapp_development 12 13test: 14 <<: *default 15 database: webapp_test

grantusersql

1GRANT ALL PRIVILEGES ON *.* TO 'webapp'@'%'; 2FLUSH PRIVILEGES;

dockercomposeyml

1version: '3' 2services: 3 app: 4 build: 5 context: . 6 env_file: 7 - ./environments/db.env 8 command: bundle exec puma -C config/puma.rb 9 volumes: 10 - .:/webapp 11 - public-data:/webapp/public 12 - tmp-data:/webapp/tmp 13 - log-data:/webapp/log 14 depends_on: 15 - db 16 db: 17 image: mysql:5.7 18 env_file: 19 - ./environments/db.env 20 volumes: 21 - db-data:/var/lib/mysql 22 web: 23 build: 24 context: containers/nginx 25 volumes: 26 - public-data:/webapp/public 27 - tmp-data:/webapp/tmp 28 ports: 29 - 80:80 30 depends_on: 31 - app 32volumes: 33 public-data: 34 tmp-data: 35 log-data: 36 db-data:

試したこと

database.ymlとdb.envのパスワードが一致しているか確認し、passwordを何度か変更してみるも同じエラーが発生。

docker-compose exec db mysql -u root -p -e"$(cat db/grant_user.sql)"のコマンドを打ち込むとパスワードが要求されるため、passwordと打ち込んでいます。

ここにより詳細な情報を記載してください。

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

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

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

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

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

yoorwm

2020/07/08 02:31

docker-composeを使っているようですが、どのような構成か?の記述ありませんよね?
shunyaYoshimra

2020/07/08 02:37

すみませんでした。docker-compose.ymlのコードも記載しておきました。
guest

回答1

0

ベストアンサー

試してないけど、mysql - Docker HubのEnvironment VariablesにあるMYSQL_ROOT_PASSWORDを設定すればそれでログイン出来るかと思います。

たぶん、コンテナを立ち上げる際に設定してない状態で立ち上がったんじゃないかと。

投稿2020/07/08 02:51

yoorwm

総合スコア1305

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

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

shunyaYoshimra

2020/07/08 03:53

ご回答有り難うございます。db.envなどのコードを変更しても既に作成したコンテナには反映されないのですね。ただ、もう一度dockerイメージから作り直して、作成前にMYSQL_ROOT_PASSWORDも設定したのですが、同じエラーとなてしまいました、、
yoorwm

2020/07/08 05:09

volumeが残ってるのからパスワードとか権限が残ったままなのかな? https://qiita.com/Ikumi/items/b319a12d7e2c9f7b904d 消してもいいならvolumeを消して再度立ち上げてみるといいかもしれません。 それか、コンテナに直にログインしてから中からMySQLに入って見てみるといいでしょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問