MySQL サーバに他のマシンからログインできないときに見直すべき2つの点

結論

  1. 「ログインを試みているユーザのログイン元(IPアドレス)」が、「ログイン先の MySQLサーバ のユーザ情報にて許可されているアドレス」かどうか。
  2. 「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 をコメントアウトしてしまえばどこからでもつなげられるようにはできます。

*1:外からアクセスする際に指定されるアドレス

*2:'foobar'@'192.168.0.1` など

*3:bind-address の行は複数行連ねることが可能

Powered by はてなブログ