💡
DockerでアプリケーションのコンテナからMySQLのコンテナに接続できない
rails aborted!
ActiveRecord::ConnectionNotEstablished: Host '172.18.0.5' is not allowed to connect to this MySQL server
docker-compose up
するとアプリケーションのコンテナがこのエラーで立ち上がらない
原因
MySQLユーザーの権限不足
対応
MySQLに入って新しいユーザーを作成し権限を与えることにした
1.DBのコンテナに入る
docker exec -it {コンテナID} bash
2.MySQLに入る
mysql -u root -p
3.ユーザーを作成
CREATE USER 'app_user'@'%' IDENTIFIED BY 'app_password';
(一応ユーザーが作成されているか確認)
SELECT User, Host FROM mysql.user
4.作成したユーザーに権限を与える
GRANT ALL PRIVILEGES ON *.* TO 'app_user'@'%' WITH GRANT OPTION;
docker-compose.ymlの書き換え
webのUSERとPASSWORDの部分を作成したユーザーのものに書き換え
これで無事にアプリケーションのコンテナを立ち上げられた
Discussion