2011-08-11 34 views
3

我有一個MySQL用戶,我們稱之爲Tom。 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不能授予他們對它們的訪問權限,那麼我需要一些可以的。我只是不想要一個可以訪問所有數據庫的用戶。這不是一個巨大的交易,但我仍然有我的程序員p嘴=] –

2

您正在做的正確。這是設計。然而,你可以做的是寫在參考手冊: 「MySQL允許你授予對不存在的數據庫或表的權限,對於表,授予的特權必須包括CREATE特權。旨在使數據庫管理員能夠爲將在稍後創建的數據庫或表準備用戶帳戶和權限。「

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

+2

因此,假定的過程是,超級用戶授予Tom對許多尚不存在的數據庫進行SELECT,INSERT,UPDATE等的權限:TOM_db1,TOM_db2等...並且TOM可自由創建當他需要時 – perissf