2006/08/16
MAMPでWebサーバ構築5

今回は、MySQLについて。
デフォルトパスワードを任意のパスワードへ変更します。
スタートページ「http://localhost:8888/MAMP/?language=Japanese」を開いてみると、「phpMyAdmin」へのリンク、ホスト、ポート、ユーザ名、パスワード、ソケット等の情報が見て取れます。
phpMyAdminはPHPで書かれたMySQL管理用スクリプトです。これを使えば、Webブラウザを使ったデータベース管理が可能となります。
さて、デフォルトの状態では、MySQLにアクセスするためのユーザ名がroot、パスワードがrootに設定されていますが、これをそのまま使い続けるのは好ましいことではありません。そこで、ターミナルを使ってパスワードを変更します。
MAMPによってインストールされたmysqlコマンドは次の所にあります。
/Applications/MAMP/Library/bin/mysql
ここにはパスが通っておらずコマンドを入力するのが面倒なので、パスが通った「/usr/bin」にシンボリックリングを張ることにします。
コマンドは次のとおり。sudoコマンドを使うので管理者用パスワードの入力が必要です。
$ cd /usr/bin $ sudo ln -s /Applications/MAMP/Library/bin/mysql mysql
次は、mysqlコマンドを使ってサーバにログインする方法です。
ターミナルに次のコマンドを打ち込みます。パスワードを聞いてきたら、デフォルトパスワードの「root」を入力します。
$ mysql -u root -p
次のようなプロンプトが帰ってきたらログイン成功です。
mysql>
次のコマンドで新しいパスワードを設定します。なお、','に囲まれた部分に任意のパスワードを入力してください。
mysql>set password = password('新しいパスワード');
「Query OK,」とメッセージが帰ってきたら、パスワードの変更が成功です。
または、次のコマンドでパスワードを設定します。
mysql>set password = old_password('新しいパスワード');
上の2つのコマンド、'password'と'old_password'の部分が違いますが、ともにパスワードを設定するもの。
MySQLの新旧バージョンでパスワードのハッシュ長が異なることから、互換性を取るために2通りのパスワード設定のコマンドがあります。
セキュリティの面では、'password'の方が好ましいのですが、'old_password'を選択しました。なぜなら、MovableTypeのデータベースとしてMySQLを使うとき、'old_password'じゃないとダメっぽいからです。
さて、話を元に戻します。
MySQLコマンドを終了するには、ターミナルに次のように入力します。
mysql> exit
以上でパスワードの変更が終了です。
MySQLのデータベースにアクセスするためにパスワードを変更したので、これを利用するPHPスクリプトについては、パスワード周りのコードを修正しなければなりません。
まずは、MAMPのトップページ「http://localhost:8888/MAMP/?langpage=Japanese」。これをブラウザで表示すると、次のようなエラーが表示されます。MySQLのパスワードを変更したことにより、データベースにアクセスできなくなったからです。
Error: Could not connect to MySQL server!
これを修正するために次のように変更します。
ファイル"/Applications/MAMP/bin/mamp/index.php"の15行目
修正前
$link = @mysql_connect(':/Applications/MAMP/tmp/mysql/mysql.sock', 'root', 'root');
修正後
$link = @mysql_connect(':/Applications/MAMP/tmp/mysql/mysql.sock', 'root', '新しいパスワード');
次に、MySQL管理スクリプト「phpMyAdmin」です。
phpMyAdminのアドレス「http://localhost:8888/phpMyAdmin/」にアクセスすると、やはりパスワード違いによりデータベースを開くことができません。
そこで次のように修正します。
ファイル"/Applications/MAMP/bin/phpMyAdmin/config.inc.php"の86行目
修正前
$cfg['Servers'][$i]['password'] = 'root';
修正後
$cfg['Servers'][$i]['password'] = '新しいパスワード';
以上が、MySQLのパスワード変更に伴うスクリプト変更です。
売り上げランキング:20197
発売日:2006/06

