以前、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」と書くべきでした。すみません。
コメント(2)
[MySQLの重さの原因はDNS逆引きだった]を参考にさせていただきまして、設定後に同じ罠にハマリまたお世話になりました。
おかげさまで無事に接続することができ、解決することができました。
どうもありがとうございました。
Fatal error: Uncaught Error: Call to undefined function ereg() in /home/wb13305/www/netcreates.jp/blog/wp-content/themes/netcreates/functions.php:281 Stack trace: #0 /home/wb13305/www/netcreates.jp/blog/wp-content/themes/netcreates/comments.php(82): sandbox_commenter_link() #1 /home/wb13305/www/netcreates.jp/blog/wp-includes/comment-template.php(1513): require('/home/wb13305/w...') #2 /home/wb13305/www/netcreates.jp/blog/wp-content/themes/netcreates/single.php(47): comments_template() #3 /home/wb13305/www/netcreates.jp/blog/wp-includes/template-loader.php(98): include('/home/wb13305/w...') #4 /home/wb13305/www/netcreates.jp/blog/wp-blog-header.php(19): require_once('/home/wb13305/w...') #5 /home/wb13305/www/netcreates.jp/blog/index.php(17): require('/home/wb13305/w...') #6 {main} thrown in /home/wb13305/www/netcreates.jp/blog/wp-content/themes/netcreates/functions.php on line 281