mysql:8455
From: Satoshi Ukawa <Satoshi Ukawa <aah48790@xxxxxxxxxx>>
Date: Sat, 6 Dec 2003 14:31:16 +0900
Subject: [mysql 08455] 一時テーブルにのみ全権限を付与する方法
はじめまして、卯川と申します。よろしくお願いします。
以下の質問に関して、ご存知の方がいらっしゃいましたらご教示いた
だけませんでしょうか。よろしくお願いします。
【質問タイトル】
・MySQLの権限設定で一時テーブルにのみ全権限を付与し、それ以外
の表にはSELECTのみ許可する方法について
【実行環境】
・RedHat Linux Ver8.0 3.2-7
・MySQL Ver4.0.13
【質問内容】
・データベース上に作成された実表に対しての追加、変更を制限した
ところそのユーザが作成する一時テーブルに対しても追加、変更で
きなくなってしまいました。
一時テーブルに対してのみフルアクセスを許可し、それ以外の表に
アクセス制限をかける方法についてご存知の方がいらっしゃいまし
たら、ご教示ください。
【再現手順】
・データベース"database"に以下の表が作成されています。
(SQL)
CREATE TABLE test( testid VARCHAR(8) PRIMARY KEY );
・あるユーザuser_aに対して、以下の権限が与えられています。
(→の部分で一行を折り返しています)
GRANT USAGE ON *.* TO 'user_a'@'%' IDENTIFIED BY →
PASSWORD '*****************'
GRANT SELECT, INSERT, UPDATE, DELETE, INDEX, CREATE →
TEMPORARY TABLES ON `database`.* TO 'user_a'@'%'
・このままではuser_aの誤操作などにより、データが削除される恐れ
があると考え、INSERT,UPDATE,DELETE権限を除去することにしま
した。
(SQL)
REVOKE INSERT,UPDATE,DELETE ON database.* FROM 'user_a';
FLUSH PRIVILEGES;
・しかしこの後、user_aでdetabaseにログインし、以下の処理を行
うとエラーが発生してしまいます。
(SQL →の部分で折り返しています)
CREATE TEMPORARY TABLE tmptest( testid VARCHAR(8) →
PRIMARY KEY );
※これはOK。作成できました。
INSERT INTO test1 SELECT * FROM test;
※エラーが発生(→の部分で一行を折り返しています)
ERROR 1044: Access denied for user: 'ukawa@%' to →
database 'medrodeo'
/*********************************
* Ukawa Satoshi
* aah48790@xxxxxxxxxx
*********************************/
-> 8455 2003-12-06 14:31 [Satoshi Ukawa <aah48] 一時テーブルにのみ全権限を付与する方法 8456 2003-12-08 02:29 ┗["Kawaji, Shinya" <ka]