2011-08-11 7 views
3

私はTomと呼ぶMySQLユーザを持っています。 Tomには、グローバルなCREATEおよびSHOW DATABASES権限と、 'GRANT'オプションがあります。 ユーザーにはデータベースごとにSELECT、INSERT、UPDATEおよびDELETE特権が割り当てられます。しかし、Tomが新しいデータベースを作成した後、グローバルなGRANTオプションがあるにもかかわらず、SELECTなどの権限を設定することはできません。MySQLユーザが新しいデータベースに特権を与えることを許可する

CREATE DATABASE `my_new_db`; -- this is fine 
GRANT SELECT , INSERT , UPDATE , DELETE ON `my_new_db` . * TO 'Tom'@'%'; 
*Access denied for user 'Tom'@'%' to database 'my_new_db'* 

これはPHPを介して行われているが、私はそれが大きな違いを作る疑う: エラーが(予想通り)です。

誰かが私が間違っていることを教えてください! Ta =]

答えて

1

あなたが持っていない特権を与えることはできません。 Tomは、グローバルなSELECT、INSERT、UPDATE、およびDELETE権限を持っている必要があります。

+0

本当に?それは正しく駄目です。だから基本的に私は '許可'ユーザーを作成する必要がありますか? –

+0

私は従いません。トムの既存の役割とはどのように違いますか? – kbolino

+0

Tomの実際の役割は読み書き可能なユーザーですが、特定のデータベースのみです。私はこれらのデータベースをオンザフライで作成する必要がありますが、Tomが自分自身にアクセス権を与えることができない場合は、できることが必要です。私はすべてのデータベースにアクセスできるユーザーが本当に必要ではなかった。 *巨大なものではありませんが、私はまだプログラマーのことを知っています。] –

2

正しくやっています。それは設計によるものです。しかし、できることはリファレンスマニュアル: に書かれています "MySQLでは、存在しないデータベースやテーブルに対して特権を与えることができます。テーブルの場合、付与される特権にはCREATE特権が含まれている必要があります。データベース管理者が後で作成するデータベースまたはテーブルのユーザーアカウントと権限を準備できるようにするためのものです。

http://dev.mysql.com/doc/refman/5.1/en/grant.html#grant-privileges

+2

その結果、想定されている手順は、スーパーユーザーが、まだ存在しない多数のデータベース(TOM_db1、TOM_db2など)に対してSELECT、INSERT、UPDATEなどの権限をTomに付与し、TOMは自由に作成できるということです彼がする必要があるとき – perissf

関連する問題