エラー
MySQLに外部から接続しようとした際に、以下のエラーが発生。
Mysql2::Error: Host '172.22.0.1' is not allowed to connect to this MySQL server
原因
原因は、指定したユーザーに、外部からのアクセス権がないことです。
実際にMySQLにて以下を実行すると、指定ユーザー(sample_user)の host が localhost
のみになっています。
これだとMySQLサーバーのコンテナ内からしかアクセスができません。
mysql> select user, host from mysql.user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
| sample_user | localhost |
+------------------+-----------+
対処方法
外部アクセスを許可するユーザーを作成し、権限を設定します。
以下のコマンドを実行します。
CREATE USER 'sample_user' IDENTIFIED BY '';
GRANT ALL PRIVILEGES ON *.* TO 'sample_user'@'%' WITH GRANT OPTION;
ユーザーの状態を確認すると、sample_userが新たに追加され、host が%
(ワイルドカード)になっています。
mysql> select user, host from mysql.user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
| sample_user | localhost |
| sample_user | % |
+------------------+-----------+
これでsample_userに対して外部からのアクセスが可能となります。