LightsailのLAMP(PHP7)イメージ内に設定されているMySQLに外部から接続しようと思ってSequel ProやMySQL Workbenchなどでアクセスしようとしたらうまくいかなくて困ったのでメモ。
接続方法はSSH経由
DBクライアントを使いたいけど、さすがに直で外部接続を許可するのは不安なので、SSH経由でのアクセスしたい。
設定内容
SSHホスト: [LightsailのパブリックIP]
ポート: 22
ユーザ: bitnami (Lightsailのデフォルト)
SSH鍵: [Lightsailに登録済みのもの]
MySQLホスト: 127.0.0.1
ポート: 3306
ユーザー: [MySQLのユーザ名]
パスワード: [MySQLパスワード]
で接続すると
Access denied for user 'ユーザ名'@'127.0.0.1'
という感じのエラーがでて接続できない。
解決方法
mysql> SELECT User, Host FROM mysql.user;
+---------------+-----------+
| User | Host |
+---------------+-----------+
| [ユーザー名] | localhost |
・・・・
| root | localhost |
+---------------+-----------+
↑ こういう感じのときに、[ユーザー名]を使ってアクセスしたいときには
+---------------+-----------+
| User | Host |
+---------------+-----------+
| [ユーザー名] | 127.0.0.1 | <-- これを追加
| [ユーザー名] | localhost |
・・・・
| root | localhost |
+---------------+-----------+
これで、接続できるようになりました。
ユーザーの追加クエリ(ざっくり)
grant all privileges on [DB名].* to [ユーザー名]@"127.0.0.1" identified by '[パスワード]' with grant option;
- [DB名] 接続を許可するデータベース
- [ユーザー名] 追加するMySQLユーザ
- [パスワード] ユーザの接続パスワード
- 詳しくは検索してください。(権限とか)
まとめ
- localhostと127.0.0.1は同じ意味ではないらしい。
- 同じ要領でユーザを増やしたり権限を調整できると思う
- LightsailのMySQLにDBクライアントからアクセスできると便利です。