竹形誠司 ブログ
Java+MySQL+Tomcat    »トピック一覧
掲示板へのスパムが多いため、「ご質問」のコーナーはユーザー登録制とさせていただきました。お手数ですが、上の「新規ユーザーの登録」メニューより登録をお願いします。
帳票Web
アプリケーション

受注開発始めました
詳しくは こちら
竹形 誠司 著/ラトルズ刊
JSP帳票アプリケーション実践開発入門
JSP帳票アプリケーション
実践開発入門

JSP業務アプリケーション短期開発入門
JSP業務アプリケーション
短期開発入門

Java+MySQL+Tomcatで始めるWebアプリケーション構築入門
Java+MySQL+Tomcatで始めるWebアプリケーション構築入門

Java+MySQL+Tomcatで作る掲示板とブログ
Java+MySQL+Tomcatで作る
掲示板とブログ
MySQLの匿名ユーザーについて
by 竹形 誠司[takegata]
読者の方から私の著書のサンプルコードが「Linuxの環境で動かない」というご指摘を頂いていろいろ調べたところ、MySQLの匿名ユーザーが問題の原因であることが分かりました。この問題は原因を特定しにくいので、ここに整理して書いておきます。

MySQLは、インストールの仕方によってはデフォルトで匿名ユーザーが登録されます。匿名ユーザーとは、名前をもたないユーザーですが、厄介なのは「すべてのユーザーにマッチしてしまう」という性質があることです。たとえば、次のSQL文でMulderというユーザーを登録したとします。
GRANT ALL ON jamyto.* TO Mulder IDENTIFIED BY 'TrustNo1';
Mulderというユーザーのパスワードは TrustNo1 で jamyto というデータベースに対してすべての権限をもちます。MySQL上のuserテーブルには'Mulder'@'%'として登録されます。'%'は、「すべてのホスト」という意味です。

問題が起こるのは、ローカルホストの匿名ユーザー''@'localhsot' がuserテーブルに存在する場合です。Mulderがローカルホストからログインしようとした場合、'Mulder'@'%'より先に''@'localhost'にマッチしてしまうため、匿名ユーザーと認識されてしまうのです。これを避けるには、GRANT文でMulderを登録する際にMulder@localhostとホスト名を含めるか、または匿名ユーザーを削除する必要があります。

セキュリティ的な面からも匿名ユーザーは削除しておいた方がよいでしょう。また、GRANT文でもホスト名を含めてユーザを指定しておいた方が(不確定要素が減るので)良いかも知れません。
投稿:竹形 誠司[takegata]/2008年 06月 22日 06時 27分 /更新:2008年 06月 22日 06時 33分