リモートホストの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 構文

ホスト制限等はドキュメントを。