PHPから複数のMySQLに接続する
- 2008.07.24
- PHP
PHPから、MySQL4とMySQL5の両方に接続したかった。
アプリケーションAでは、MySQL4(ポート3306、/tmp/mysql.sock)へ接続する。
アプリケーションBでは、MySQL5(ポート3307、/tmp/mysql5.sock)へ接続する。
で、このように対処した。
■MySQL5へ接続するPHPプログラム
<?php // MySQLへ接続する ini_set("mysql.default_socket", '/tmp/mysql5.sock'); ini_set("mysql.default_port", '3307'); $link = mysql_connect( 'localhost:3307', 'root', 'password'); if ( ! $link ) { die( '接続できませんでした: ' . mysql_error() ); } else { echo '接続に成功しました'; } // データベースmysql_dbを選択する。 $db_selected = mysql_select_db( "mysql_db", $link ); if ( ! $db_selected ) { die ( "DBを選択できませんでした" . mysql_error() ); } ?>
▼MySQL5ではなく、MySQL4へ接続してしまう。
$link = mysql_connect( ‘localhost:/tmp/mysql5.sock’, ‘root’, ‘password’);
▼接続時にエラー表示される。
$link = mysql_connect( ‘localhost:3307’, ‘root’, ‘password’);
$link = mysql_connect( ‘127.0.0.1:3307’, ‘root’, ‘password’);
▼表示されるエラー
Warning: mysql_connect(): Client does not support authentication protocol requested by server; consider upgrading MySQL client in /export/home/web/public_html/test.php on line 5接続できませんでした: Client does not support authentication protocol requested by server; consider upgrading MySQL client
■対応策
consider upgrading MySQL client と言われているので、PHPそのものをアップグレードした方がよいと思われる。
インストールした順序は、
1. MySQL4
2. PHP4
3. MySQL5
なので、PHPは、MySQL4のバイナリか何かを利用してMySQL5へ接続しようとしている可能性があると思い、試してみた。
▼MySQL5のクライアントソフトからMySQL4へ接続してみる。(上手くいく)
$ /usr/local/mysql5/bin/mysql --port=3306 -u root -p
▼MySQL4のクライアントソフトからMySQL5へ接続してみる。(MySQL4へ接続されてしまう)
$ /usr/local/mysql4/bin/mysql --port=3307 -u root -p
よって、PHPが新しいMySQL5のクライアントを指定するようなコンパイルをして再インストールしてあげないといけなさそう。
今は、時間がないので、今度試してみる。
-
前の記事
IllustratorでCD DVD用のラベルを作成する 2008.07.15
-
次の記事
PHPセキュリティのメモ 2008.07.24