前回からの短い間に,多くのバグフィックスとともに2つのセキュリティフィックスが含まれるMySQL 5.0.25がリリースされている。今回はこれらのセキュリティ・ホールについて解説する。また利用頻度が非常に多いInnoDBのファイル設定に関しても解説する。

MySQL 5.xのセキュリティ・ホール

権限のないユーザーが同名のデータベースを作成できる問題

 Linuxなどファイルシステムが大文字と小文字をシビアに識別している環境で,本来作成できないデータベースを作成できてしまうセキュリティ・ホールが発見された。

図1●権限のないユーザーが同様のデータベースを作成できるセキュリティ・ホールの症状(MySQL Bugs: #17647より)

1.$ mysql -u root -p
2.Enter password:
3.mysql> create database sample;
4.mysql> grant all on sample.* to 'sample'@'%' identified by 'password';
5.mysql> \q
6.$ mysql -u sample -p -A sample
7.mysql> create database another;
8.ERROR 1044: Access denied for user 'sample'@'%' to database 'another'
9.mysql> create database sAmple;
10.Query OK,1 row affected (0.00 sec)
11.mysql> show databases;
12.+----------+
13.| Database |
14.+----------+
15.| SAmple |
16.| sample |
17.| test |
18.+----------+
19.3 rows in set (0.00 sec)

1行目から5行目,rootでログインを行い,データベースsampleを作成し,すべての権限をもつユーザーsampleを作成。
6行目,データベースsampleにユーザーsampleでログイン。
7行目と8行目,データベースanotherを作成しようとするが,アクセスエラーで作成されない。これは,正しい動作だ。
9行目と10行目,データベースsAmpleを作成するとエラーなく,作成が行われてしまう。
このように本来,作成できないユーザーが新規にデータベースを作成できてしまう。なお,Windowsでは,ファイルシステムが大文字と小文字を識別(認識はしている)しないので,既に存在するデータベースとしてエラーとなる。

図2●セキュリティ・ホールの概要

 このセキュリティ・ホールは,MySQL 4.1では,MySQL 4.1.21(7月19日リリース)で,フィックス済だ。MySQL 5.0は,今回のリリースMySQL 5.0.25で,フィックスされた。なお,MySQL 5.1では,MySQL 5.1.12(未リリース)でフィックスする予定だ。

 もう一つのセキュリティ・フィックスは,MySQL5.xに特有の問題だ。