NETCREATESBLOGネットクリエイツの公式ブログ

skip-name-resolveを書くとDBに接続できない場合

以前、MySQLの重さの原因はDNS逆引きだった という記事を書いたのですが、それを読んでmy.cnfにskip-name-resolveを設定したという後輩から「DBに接続できなくなった」という問い合わせを受けました。

 

話を聞いたところ、MySQLにローカル接続用のユーザを追加するとき、MySQL 権限テーブルに「localhost」と書いたとのこと。

こんな感じ

grant all privileges on DB.* to userid@’localhost‘ identified by ‘hogehoge’;

記事にも書きましたが、skip-name-resolveを使うとホスト名の解決を行わなくなりますから当然、ローカル接続も接続元が「localhost」ではなく 127.0.0.1 として扱われます

なので、MySQLをインストールしたての時など@127.0.0.1なユーザが居ない状態でいきなりskip-name-resolveを設定するとMySQLに接続できないのです・・・。

grant all privileges on DB.* to userid@127.0.0.1 identified by ‘hogehoge’;

上記のようにユーザ追加時にはIPアドレスを使用すれば大丈夫。

ただ、記事に「うちのようにlocalhostからしかMySQLを使わない場合、MySQLがDNS逆引きを行う必要は無いですし、このほうがパフォーマンスも良いみたいです。」なんて書き方をしたせいで誤解を生んだ可能性があり、申し訳ないです。

そこはlocalhostではなく「127.0.0.1」と書くべきでした。すみません。

トラックバック(0)

このブログ記事に対するトラックバックURL: https://netcreates.jp/blog/2009/05/skip-name-resolvedb.html/trackback

コメント(2)

  1. [MySQLの重さの原因はDNS逆引きだった]を参考にさせていただきまして、設定後に同じ罠にハマリまたお世話になりました。
    おかげさまで無事に接続することができ、解決することができました。
    どうもありがとうございました。

    Harusir | 2009年5月18日 20:03
  2. お役に立てて何よりです。
    しかしこのトラブル、Linux + MySQLでは発生しない(localhostのままでOK)という指摘もあり、もう少し調べようと思います。
    http://dev.mysql.com/doc/refman/5.1/ja/dns.html
    上記ページには「この場合は、MySQL 権限テーブルで IP 番号しか使用できなくなります。」と書かれているのですがねぇ・・・

    shinsuke | 2009年5月21日 00:57