結論
- 「ログインを試みているユーザのログイン元(IPアドレス)」が、「ログイン先の MySQLサーバ のユーザ情報にて許可されているアドレス」かどうか。
- 「MySQLサーバ の IPアドレス
*1」が、「MySQLサーバ の設定ファイル中の
bind-address
」 に記載されているかどうか
詳細
2つの場合について詳細を見ていきます。
1. 「ログインを試みているユーザのログイン元(IPアドレス)」が、「ログイン先の MySQLサーバ のユーザ情報にて許可されているアドレス」かどうか
MySQL のユーザを追加する際は、ユーザー名とパスワードに加え、「接続を許可する接続元のIPアドレス」もセットで設定します。たとえば、ユーザー名が foobar
のユーザを作ったとしたら、この foobar
というユーザはどこからアクセスを認めるか、ということも併せて設定します*2。
MySQLサーバに接続しようとしているマシンのIPアドレスが、「接続を許可するIPアドレス」の条件を満たすものかどうかを確かめる必要があります。
2.「MySQLサーバ の IPアドレス」が、「MySQLサーバ の設定ファイル中の bind-address
」 に記載されているかどうか
「1.」の設定に加え、MySQLサーバの設定ファイル中の bind-address
で指定する IPアドレス にも注目します。
この bind-address
に設定する IPアドレス は、MySQLサーバ そのもののアドレスです。ここで指定するアドレスは、「外から指定される際の自分自身のIPアドレス」です。
「『自分自身』のIPアドレスだから 127.0.0.1
さえ書いてあればオールマイティ」ということではなく、「外から MySQLサーバ
にアクセスされる際に指定されるアドレス」も書いていないといけません*3。例えば、192.168.1.7
のようなアドレスになります。これは、クライアント側からは、$ mysql -u foobar -p -h 192.168.1.7
という形でアクセスされる場合を考えています。
備考
「2.」がハマりやすいと思いますので気をつけたほうが良いでしょう。なお binde-address
をコメントアウトしてしまえばどこからでもつなげられるようにはできます。