mysql:14598
From: <kozu@xxxxxxxxxx>
Date: Sat, 7 Jun 2008 00:42:36 +0900 (JST)
Subject: [mysql 14598] Re: 権限について
中富さん
こんばんは、kozu です。
中富さんから頂いたアドバイスを踏まえ、
情報提供元である身内の情報を詳細に確認致しましたら、
新たな事が判明致しました。
(私自身が現象を正しく理解していませんでした^^;)
私の検証環境 CentOS5.1 に yum で mysql5.0 を入れて、
色々試した結果、以下の SQL を発行すると、
testuser は test_db2 を作成する事は出来ないが、
`test?db1` であれば作成できるというバグのような現象が起きています。
① testuser を作成
insert into mysql.user (host,user,password)
values ('%','testuser',PASSWORD('$password'));
② 権限を付与
insert into mysql.db
(host,db,user,Select_priv,Insert_priv,Update_priv,
Delete_priv,Create_priv,Drop_priv,References_priv,Index_priv,
Alter_priv,Create_tmp_table_priv,Lock_tables_priv)
values
('%','test_db1','testuser','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
③ testuser でログイン
④ test_db2 は作成する事が出来ないが、test_db1 であれば作成が出来てしまう。
なお、create database `test?db1` のように、
バッククオート付きでクエリーを発行するのがミソのようです。
ちなみに、GRANTを使った場合でも同様です。
私は以下の手順で現象を確認しました。
① データベースを作成
create database `test_db1`;
② GRANT
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
ON test_db1.* TO testuser@localhost IDENTIFIED BY 'testtest';
③ testuser でログイン
④ test_db2 は作成する事が出来ないが、test_db1 であれば作成が出来てしまう。
14594 2008-06-06 22:06 [<kozu@xxxxxxxxxx> ] 権限について 14595 2008-06-06 22:35 ┗[Katsutoshi Nakatomi ] 14596 2008-06-06 23:24 ┗[<kozu@xxxxxxxxxx> ] 14597 2008-06-06 23:47 ┗[Katsutoshi Nakatomi ] -> 14598 2008-06-07 00:42 ┗[<kozu@xxxxxxxxxx> ] 14599 2008-06-07 00:47 ┗[<kozu@xxxxxxxxxx> ] 14600 2008-06-07 02:42 ┗[<kozu@xxxxxxxxxx> ]