Mar 25, 2007

PHP4.3xとMySQL4.1xのパスワード互換性を解決しよう2

Panther tiger



 PHP4.3とMySQL4.1以上の互換性ついて、古いパスワード形式による解決法を紹介してきました。しかし、この方法だけではOLD_PASSWORD設定コマンドを実行したユーザーが問題解決するだけで、新規ユーザーは解決しません。なにしろ、ユーザーを新規作成するたび、結局また互換性のない新しいパスワード形式で作成されてしまうからです。

 これを解決するには、ユーザーを作成するたび、いちいちOLD_PASSWORD設定をコマンドラインから実行しないといけないことになります。ユーザーさんが一人か二人なら、このぐらいは朝飯前なわけですが、人数が増えていきますと、毎回こんな面倒なことをやっているわけにもいかなくなります。

 そこでMySQLに新しく作成されるユーザーは、はじめからOLD_PASSWORDで作成されるようにサーバーに設定を加えておきます。ここでは、MySQLに動作環境を指定するファイル「my.cnf」ファイルを設置し、常にMySQLがOLD_PASSWORDで動作するようにする方法を考えていきます。


新規で作成したユーザーは結局また
こんなエラーが出てphpMyAdminが使えない



はじめに

 OLD_PASSWORDの設定については、前のログでやりました。

PHP4.3xでMySQL4.1やMySQL5.0xにアクセスできるようにしよう

 上記のログは、すでにあるユーザーに対しての設定方法でしたが、ここで考えているのは、「新規に追加作成したユーザー」です。phpMyAdminで新しいユーザーを追加すると、新しいユーザーは新形式パスワードのため、データベースにはアクセスできません。なので、結局新しいユーザーについても以下のコマンドを使用しないといけなくなるわけです。


set password for 追加したユーザー名@localhost=old_password('追加したユーザーのパスワード');


 毎回こんな面倒なことをやっているわけにもいかないので、MySQLに動作環境を指定できるファイル「my.cnf」ファイルの[mysqld]に「old-passwords」を記述することで、MySQLがOLD_PASSWORDで動作するようしてしまいます。



必要なもの

  • Mac(Mac OS Xを搭載しているもの。ここは10.4.x(Tiger)で進みます)
  • Safari
  • テキストエディット
  • やる気
  • オープンソースコミュニティへの応援
  • セキュリティーとプライバシーへの配慮
  • インターネットを構築してくれた方々への畏敬の念



my.cnfファイルの作成

  1. まず、Finderの「移動」から「フォルダへ移動...」を実行して、以下のように入力し、フォルダを開きます。

    /usr/local/mysql/support-files/



    フォルダへ移動...を実行して、


    ダイアログに入力して移動。


  2. ごちゃーっとファイルの入ったウィンドウが開きます。



  3. 開いたウィンドウの中から、「my-medium.cnf」という名前のファイルを探し、これをデスクトップにドラッグアンドドロップでコピーします。



    どっこいしょと

    話が脱線してしまいますが、このファイルはOLD-PASSWORDを設定するだけのものではなく、MySQL自身の動作に大きく影響します。MySQLを高速化することもできますし、逆にサーバーの足回りが重くなったりするかもしれません。メモリサイズやデータベースの大きさなどによります。そのセッティングを出すのはなかなか難しいそうで、とりあえずMySQLさんでは自分のサーバースペックにあわせて、選べるように、あらかじめいくつかのmy.cnfファイルを用意してくれています。フォルダの中にあるmy-large.cnf, my-medium.cnf, my-small.cnfなどです。ここでは中ぐらいのサーバー、という位置づけでmy-medium.cnf
    を利用して作業をしていきます。


  4. このファイルをテキストエディットやmiで開きます。



  5. うわーっといっぱい書いてあって、頭がクラクラしてきますが、する作業は一つだけなので気楽に構えていきます。この中から[mysqld]とかかれている行を探します。だいたい26行目ぐらいにあるはずです。



  6. [mysqld]より下にはportやsocketなどの設定が一行ずつ書き込まれています。このいくつかある設定の一番下に、以下の記述を加えます。

    old-passwords

    今までの感覚で「OLD_PASSWORD」と書きたくなりますが、アンダーバー「_」ではなくハイフン「-」です。あと小文字。それからなぜか複数形の「s」がつきます。





  7. 記述がすんだら保存し、閉じます。



  8. 今編集したmy-medium.cnfファイルの名前を、「my.cnf」ファイルに変更します。

    この名前を...


    my.cnfに変更します。


my.cnfファイルの設置

作成したmy.cnfファイルを設置していきます。ちょっとびくびくする作業ですが、がんばります。

  1. Finderの移動から「フォルダへ移動...」を実行し、以下を入力して、etcフォルダを開きます。

    /etc




  2. etcフォルダが開きます。なんかどきどきするファイルばかりですが、気にせず作業をします。



  3. このetcウィンドウの中に、デスクトップの「my.cnf」ファイルをドラッグアンドドロップします。



  4. 認証を求める以下のようなダイアログが出ます。ここは「認証」を押して先に進みます。



    ポチッとおします。


  5. 認証ダイアログが出ますので、ここにMacの管理者ユーザー名とパスワードを入力します。




  6. 認証がすむと、コピーが完了し、etcフォルダに収まります。



    はいったはいった。


my.cnfのアクセス権設定

etcフォルダに入れたmy.cnfファイルは、ドラッグアンドドロップしただけだと、正しいアクセス権が設定されていないので修正します。

  1. my.cnfをクリックして、Finderから「情報をみる」を実行します。




  2. my.cnfの情報が表示されますので、一番下「所有者とアクセス権」の「詳細な情報」をクリックして展開させます。





  3. 以下のように設定されていますので、まず、グループを「wheel」に、オーナーを「システム」に変更します。注意することは、まずグループから設定をすることです。先にオーナーから変更してしまうと、グループが変更できなくなってしまいます。変更しようとすると認証を求められますので、先ほどと同様に対応します。

    これを、


    これに。


    グレーになっていて設定が変更できないときは、右の錠前アイコンをクリックして外すと変更できるようになります。


  4. 変更が終わったら情報ウィンドウを閉じて、作業は終了です。



MySQLの再起動

my.cnfの設置が終了したので、MySQLを再起動します。

  1. システム環境設定を開いて、MySQLパネルを開きます。






  2. MySQL設定パネルが開いたら、「Stop MySQL Server」をクリックして、一度MySQLを停止させます。停止した後、あらためて「Start MySQL Server」を実行することで、MySQLが先ほど設置したmy.cnfファイルの設定を読み込んでくれます。


    パネルが開いたら...



    一度「Stop MySQL Server」を実行。認証を求められたら対応します。



    MySQLが停止したのを確認したら、「Start MySQL Server」を実行します。



  3. my.cnfの記述に問題がなければ、MySQLは無事に起動し、「running」と表示されます。




  4. 以上で、my.cnfの設定は終了です。お疲れ様でした。




動作確認

 動作確認はちょっと面倒なのですが、phpMyAdminで実際に新しいユーザーを作成して、どこかにP_BLOGなどのphpを利用したプログラムを設置し、新規ユーザーでアクセスができるか試してみるとよいと思います。



Trackback

No Trackbacks

Track from Your Website

http://earlybirds.ddo.jp/namahage/inegalog/trackback/tb.php?id=45
(言及リンクのないトラックバックは無視されます)

Comments in Forum

Discuss