mysql(5.0.95->5.5.46) + mod_auth_mysql の更新(CentOS 5.11)

ローカルでredmine(1.3.0.devel.8694)を利用している。かなり古くなったので近々、バージョンアップしたい。いきなり、現物をいじるのは気が引けるので、virtualbox環境下のCentOS上で確認した関連更新手順を個人的な備忘録としてまとめた。今回はmysql部分。

# 大きな流れ

ざっと、以下の様なながれ。
`mod_auth_mysql`に関しては、svn(+apache2)向けのBASIC認証でredmineのアカウントとパスワードを利用しているので、要更新。

1. バックアップ
2. 旧mysql(5.0.95)のアンインストール
3. 新mysql(5.5.46)のインストール
4. リストア
5. `mod_auth_mysql` のビルド＆インストール

# バックアップ

~~~~sh
$ mysqldump -u root -p -h localhost --all-databases > backup_all.sql
$ cp -p /etc/my.cnf my.cnf # 現状、デフォルトで利用しているので、不要。
~~~~

# 旧mysql(5.0.95)のアンインストール

mysqlは、`yum`経由でインストールしていたので、以下で消せる。

~~~~sh
$ sudo /etc/init.d/mysqld stop       # DB停止
$ sudo yum erase mysql mysql-server  # 削除。依存する奴も合わせて。

# 今回削除消したやつ
==========================================================================================
 Package                    Arch       Version                      Repository       Size
==========================================================================================
Removing:
 mysql                      i386       5.0.95-5.el5_9               installed       8.0 M
 mysql-server               i386       5.0.95-5.el5_9               installed        22 M
Removing for dependencies:
 MySQL-python               i386       1.2.3-0.1.c1.el5             installed       306 k
 libdbi-dbd-mysql           i386       0.8.1a-1.2.2                 installed        37 k
 mod_auth_mysql             i386       1:3.0.0-3.2.sha1.salt        installed        43 k
 mysql-connector-odbc       i386       3.51.26r1127-2.el5           installed       423 k
 mysql-devel                i386       5.0.95-5.el5_9               installed       5.6 M
 perl-DBD-MySQL             i386       3.0007-2.el5                 installed       326 k
~~~~

# 新mysql(5.5.46)のインストール

5.5系のrpmが、remiリポジトリにある模様。

~~~~sh
$ sudo rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
$ sudo yum --enablerepo=remi install mysql mysql-server mysql-devel
$ sudo /etc/init.d/mysqld start
$ sudo /sbin/chkconfig mysqld on  # 立ち上げ時に自動で起動するように
~~~~


# リストア

出鼻で取得したバックアップ：`backup_all.sql`を、そのままリストア。
`my.conf`は、デフォルトで利用している分には、変更が無かったのでそのまま。

~~~~sh
$ mysql -u root -p < backup_all.sql
~~~~

本来は[こちら](http://d.hatena.ne.jp/takaya030/20120630/1341072325)の手順にある`mysql_upgrade`でいけるはずらしいのだが、以下の様なエラーが出たりしたので、断念。。一応に、ダメ元で`--skip-version-check`を試してみたら、わけのわからないエラーとなった。。

~~~~sh
$ mysql_upgrade -u root -p -h localhost
Enter password:
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
Error: Server version (5.0.95) does not match with the version of
the server (5.5.46) with which this program was built/distributed. You can
use --skip-version-check to skip this check.
FATAL ERROR: Upgrade failed
  ：
~~~~

## アカウント情報が消えていた場合

本番では、アカウント情報が消えており、`mysql -u root -p `で、ログインできなかった。
＃仮想環境と、環境設定に若干ずれがあった模様。。（焦った。。）

そこで、一旦、パスワード無でリストア。

~~~~sh
$ mysql -u root < backup_all.sql
~~~~

その後、
http://qiita.com/daichi87gi/items/f9dac6cd8acc3ad4330d
を参考にして、rootとredmine用のアカウントを追加。

~~~~sql:rootパスワード追加
$ mysql -u root

mysql> USE mysql;
mysql> UPDATE user SET password=PASSWORD('password_YYYYYY')  WHERE host='localhost' AND user='root';
mysql> FLUSH PRIVILEGES;
~~~~

~~~~sql:redminユーザアカウント追加
$ mysql -u root -p

mysql> CREATE USER 'redmineuser'@'localhost' IDENTIFIED BY 'password_XXXXXX';
mysql> GRANT ALL PRIVILEGES ON redmine.* TO 'redmineuser'@'localhost';
mysql> FLUSH PRIVILEGES;
~~~~

# `mod_auth_mysql` のビルド＆インストール

バージョンアップで、mysqlのライブラリが変わったので、`mod_auth_mysql`も、更新する必要がある。
`mod_auth_mysql`は、かなり前から更新が滞っている為、SRPMを借用し、若干パッチを充てる必要がある。
手順は以下の通り。

1. `rpmbuild`を一般ユーザで行う設定をする(飛ばしてもよい)
2. SRPMの取得、インストール
3. パッチに取得＆SPECファイル編集
4. ビルド＆インストール
5. redmine.confの編集
6. apatch2の再起動＆確認

## `rpmbuild`を一般ユーザで行う設定をする

[こちら](http://www.maruko2.com/mw/%E4%B8%80%E8%88%AC%E3%83%A6%E3%83%BC%E3%82%B6%E3%81%A7_RPM_%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B)で、丸々お世話になる。
既に設定済みの場合や、suして実施する場合などは飛ばす。

## パッチに取得＆SPECファイル編集

基本、[こちら](http://d.hatena.ne.jp/ksaito11/20120809/1344523538)と[こちら](http://d.hatena.ne.jp/vmi/20111102/p1)を参考にさせていただいた。

~~~~sh
$ cd SRPMS
$ wget ftp://ftp.icm.edu.pl/vol/rzm5/linux-fedora-secondary/updates/15/SRPMS/mod_auth_mysql-3.0.0-18.fc15.src.rpm
$ rpm -ivh --nomd5 mod_auth_mysql-3.0.0-18.fc15.src.rpm
$ cd ../SOURCES
$ wget http://www.redmine.org/attachments/download/6443/mod_auth_mysql-3.0.0-redmine.patch # パッチ取得
$ cd ../SPECS
$ vi mod_auth_mysql.spec # 以下、specファイルの編集参照
~~~~

~~~~diff:specファイルの編集(diffのとり方が逆)
--- mod_auth_mysql.spec 2015-10-09 12:00:28.000000000 +0900
+++ mod_auth_mysql.spec.org     2015-10-09 11:59:36.000000000 +0900
@@ -1,7 +1,7 @@
 Summary: Basic authentication for the Apache web server using a MySQL database
 Name: mod_auth_mysql
 Version: 3.0.0
-Release: 18.1%{?dist}
+Release: 18%{?dist}
 Epoch: 1
 Group: System Environment/Daemons
 URL: http://modauthmysql.sourceforge.net/
@@ -11,7 +11,6 @@
 Patch1: mod_auth_mysql-3.0.0-disable.patch
 Patch10: mod_auth_mysql-3.0.0-CVE-2008-2384.patch
 Patch11: mod_auth_mysql_make_scrambled_password.patch
-Patch20: mod_auth_mysql-3.0.0-redmine.patch
 License: ASL 1.1
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 BuildRequires: httpd-devel, mysql-devel
@@ -29,8 +28,6 @@
 %patch10 -p1 -b .cve2384
 %patch11 -p1 -b .scrambled

-%patch20 -p1 -b .redmine
-
 %build
~~~~

## ビルド＆インストール

編集したSPECファイルを指定して`rpmbuild`し、インストール。

~~~~sh
$ rpmbuild -bb mod_auth_mysql.spec
$ cd ../RPMS/i386
$ sudo rpm -ivh mod_auth_mysql-3.0.0-18.1.local.i386.rpm
~~~~

## redmine.confの編集

このままだとBASIC認証が通らないので`redmin.conf`の以下を編集する。

~~~~sh
AuthMySQLPwEncryption sha1
                       ↓
AuthMySQLPwEncryption sha1-rm
~~~~

## httpdの再起動＆確認

以下で、httpdを再起動し、svnクライアントからredmineに登録しているアカウント＋パスワードでコミット出来たら成功。

~~~~sh
$ sudo /etc/init.d/httpd restart
~~~~