TITLE:MySQLの導入 *MySQLの導入 [#x63f40b3] **MySQLサーバのインストール [#pea586de] ここまでの段階で、MySQLのライブラリ関係はインストールされている。 mysql-libs.x86_64 5.5.36-1.el6.remi @remi compat-mysql51.x86_64 5.1.54-1.el6.remi @remi PHPと同様にRemiリポジトリを利用して、MySQLサーバなどのソフトウェアをインストールする。 # yum install --enablerepo=remi,epel mysql mysql-server mysql-devel mod_auth_mysql mysql-connector-odbc 依存関係のためいくつかのパッケージがインストールされる。 **MySQLの設定 [#q4e712bd] 設定ファイルを編集する。 # vi /etc/my.cnf 次のような設定を追加する。今回は、MySQLのバージョンが5.5(以上?)になっているはずなので、以前とはいくつか設定が変更されている。 [mysqld] character-set-server = utf8 skip-character-set-client-handshake old-passwords = 1 [mysqld_safe] character-set-server = utf8 [mysql] default-character-set = utf8 **MySQLサーバの起動 [#x01ac2df] システムが起動するときに、MySQLも起動するようにする。 # chkconfig mysqld on # service mysqld start **MySQLサーバの初期設定 [#raefc9f8] データベースを初期化するには、 「mysql_install_db」コマンドを使用する # mysql_install_db 安全にデータベースを利用するために、 「mysql_secure_installation」というコマンドを使用する。 rootのパスワードなどを対話形式で設定できる。 # mysql_secure_installation 「mysql_secure_installation」というコマンドを使わない場合の手順もまとめておく。 まず、データベース管理者のパスワードを設定する。 # mysql -u root mysql> set password for root@localhost=password('パスワード'); mysql> set password for root@'127.0.0.1'=password('パスワード'); mysql> set password for root@'ホスト名'=password('パスワード'); 次に、匿名ユーザを削除する。 mysql> delete from mysql.user where user=''; 設定を確認する。 mysql> select user,host,password from mysql.user; ... mysql> flush privileges; ←設定を反映する。 mysql> exit あとはテスト用のデータベースを削除しておく。 **データベースのアップデート [#z2a0e8f8] MySQLをアップデートしたときに、データベースやテーブルを更新が必要な場合がある。 その場合は指定されたコマンドを使用する。使わないとえらいことになることも…… # mysql_upgrade -u root -p **追記:php-mysqlndに関係した設定 [#c8f91d39] PHPを5.5にアップグレードしたときに、php-mysqlにかわって、php-mysqlndがインストールされた。MySQLのネイティブドライバである。 -http://us3.php.net/manual/ja/mysqlnd.plugin.mysql-proxy.php -http://d.hatena.ne.jp/bco/20110101/1293887044 パフォーマンスがよくなると思って喜んでいたら、 MySQLデータベースを利用していたMoodleからデータベースに接続できないとのエラーメッセージが…さらに、phpMyAdminもつながらない… 何が原因かと、ApacheやMySQLのログを見てみると、こんなメッセージが… … PHP Warning: mysqli::mysqli(): The server requested authentication method unknown to the client [mysql_old_password] … Host 'hogehoge' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts' … まず1つ目のメッセージを、とりあえず、メッセージをそのままググると、こんな情報が… -http://mohsenreza.blogspot.jp/2012/04/mysql55php54mysqlnd-authentication.html -http://ezic-feed.w.ezic.info/3182.html -http://www.ninton.co.jp/?p=1198 つまり、「my.cnf」に書いた「old_passwords=1」がダメだったということで(汗) php-mysqlndでは、古いパスワードフォーマット(16バイト)ではデータベースに接続できないということ。 解決策としては、「old_passwords=1」を「old_passwords=0」と書き換え、新しいパスワードフォーマット(41バイト)にするために各ユーザのパスワードを変更し直すしかない。 これでmysqldを再起動しても、トラブルは解消しない。 2つ目のメッセージをググると、次のような情報が見つかる。 -http://koexuka.blogspot.jp/2009/04/mysql-host-is-blocked.html -http://d.hatena.ne.jp/akishin999/20100925/1285430216 -http://dev.mysql.com/doc/refman/4.1/ja/blocked-host.html というわけで、設定された回数(今回はデフォルトの10回)以上、接続に失敗したホストは遮断してしまうというのが原因だった。 解決するには、次のコマンドを実行する。 # mysqladmin flush-hosts これでようやく問題が解消。 ***参考 [#s61822a7] -http://centossrv.com/mysql.shtml -http://www.server-world.info/query?os=CentOS_6&p=mysql&f=1 -http://wikiwiki.jp/poiuy/?LAMP%A5%B5%A1%BC%A5%D0%B9%BD%C3%DB -http://server-setting.info/scientific-linux/mysql5-5-install.html -http://oxynotes.com/?p=4973 |