リモートホストのmysqlにログインできない時の確認箇所
ec2上のdockerから別のec2上に起動してあるmysqlにアクセスしようとした際に、
Access denied for user
というエラーが出てはまった。
原因としてはmysql側で外部からのアクセスを許可していなかったのと、mysql内のデータベース操作権限を与えていなかったからだった。
まず外部からのアクセスを許可するには
/etc/mysql/my.cnf内のbind-address
の箇所を書き換える。
デフォルト127.0.0.1になっているので、ここにアクセス許可を出すIPを追記していく。
もしどこからでもアクセスさせたい場合はbind-addressをコメントアウトすれば、可能になる。
mysql内の操作権限は、
mysql > GRANT ALL PRIVILEGES ON db名.(テーブル名 or *) TO 'ユーザー名' IDENTIFIED BY 'パスワード'; FLUSH PRIVILEGES; //反映
でアクセス権限を許可できる。 ↑は全ipに対して許可してしまうので、実運用ではホストの制限をするなどは必要になるかと。
MySQL :: MySQL 5.6 リファレンスマニュアル :: 13.7.1.4 GRANT 構文
ホスト制限等はドキュメントを。