N@i.jp  昨日:7496
 今日:2559
 総計:00130464
keywords
管理者専用
  Post   Add link   Control Panel 






























新しいトピック
最新:03/08 20:16


新しいコメント
最新:06/04 19:41






管理人へMAIL

プライバシーポリシー

PHP5.6 が EOL(3)

MySQL拡張からMySQLiへ移行しよう


 PHP7へ移行するには、MySQL拡張からMySQLiへ移行しなければならない。修正規模を調べてみたら、こんな小さなBlogなのに mysql関数を使用している箇所は 73ファイルで 370行以上あった。これを全て mysqli関数に書き換える必要があるわけだけど、その前に MySQLiで DBコネクションが失敗するのを何とかしなければ。
 手順は、

  1. MySQL DBをバックアップ
  2. "my.cnf"ファイルに"old_passwords=0"設定を追加
  3. MySQL DBを再起動
  4. パスワードを再設定

と言ったところかな。

 MySQL DBのバックアップは週一回の定期バックアップが成功しているので、これで良しとした。
 次は"my.cnf"への設定の追加。ところで、"my.cnf"(MySQLの初期設定ファイル)は何処にあるんだ?

$ /usr/local/mysql/bin/mysql --help | grep my.cnf
                      order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql-X.X.XX/etc/my.cnf ~/.my.cnf

この順番で"my.cnf"ファイルを探すらしいが、どこにも無かったので、"/etc/mysql/my.cnf" を作成し、以下のように書き込んだ。

[mysqld]
old_passwords=0

その後、サーバ(Mac mini G4)を再起動し、起動したら以下のようにMySQLユーザのパスワードを再設定する。

$ mysql -u root -p
Enter password: ←パスワードを入力
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 12
Server version: X.X.XX MySQL Community Server (GPL)

Copyright (c) 2000, 201n, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('my_password');
Query OK, 0 rows affected (0.00 sec)

これで良い様子。確認するには、

mysql> SELECT * FROM `mysql`.`user`;
+--------------+------+-------------------------------------------+
| Host         | User | Password                                  |
+--------------+------+-------------------------------------------+
| localhost    | root | *C56DD89366EAF9D514A72BF0C616CEA86A95CEF4 |
〜
+--------------+------+-------------------------------------------+
4 rows in set (0.01 sec)

横に長〜いので途中で切っているけど、Passwordのところにこのくらい長い文字列が表示されれば41バイトハッシュになっているそうです。
 これで、

//connect db
$active_db = mysqli_connect($SQL_HOST,$SQL_U_NAME,$SQL_PASS,$SQL_DB);
$res = mysqli_connect_errno();
if($res > 0){
  exit("MySQL接続に失敗しました。code=".(string)$res);
}

の部分がエラーにならなければ成功。今ウチのサーバ(Mac mini)ではMySQL拡張の mysql_connect() と、MySQLi拡張の mysqli_connect() の両方でコネクションしているが、どちらも成功している様子。


< 過去の記事 [ 3月の 全てのカテゴリ リスト ] 新しい記事 >

2019 calendar
3月
12
3456789
10111213141516
17181920212223
24252627282930
31


掲示板
最新:08/15 17:19


GsBlog was developed by GUSTAV, Copyright(C) 2003, Web Application Factory All Rights Reserved.