2012-07-02 97 views
3

我想在MySql中創建一個新用戶。我不希望這個新用戶用我現有的數據庫做很多事情(我只想授予他Select特權),但他可以用他創建的一個新數據庫做任何事情和任何事情。MySql授予用戶權限

首先,有沒有一種方法可以根據數據庫所有者授予權限?如果可能的話,那是我正在尋找的理想事物。如果沒有,那我該如何限制一個特定用戶只訪問某個特定數據庫的[只有特權],允許他對剩餘的數據庫做他想做的任何事情?

+0

@Anuj你必須將權限授予各個DB你想要的用戶訪問 – Nico

+0

但正如我告訴,用戶還可以創建新的數據庫。所以我無法爲所有數據庫明確授予用戶權限。 – Anuj

+0

沒關係,請讓我們知道,如果你解決這個問題,HeatfanJhon的回答 – jcho360

回答

15

從MySQL的grant documentation

CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass'; 
GRANT SELECT ON *.* TO 'jeffrey'@'localhost'; 
GRANT ALL ON db1.* TO 'jeffrey'@'localhost'; 

第一個命令創建用戶。第二筆撥款在所有數據庫和表格上進行選擇。第三個命令授予對db1中所​​有表的所有訪問權限。

還有什麼其他具體的你想要做的?

+0

雅我讀過這個,但我無法得到我打算做的事情。假設我已經有2個數據庫,即db1和db2。我希望新用戶只能選擇這些2分貝的特權,但他應該能夠創建自己的新數據庫,並且應該能夠對該數據庫做任何他想做的事情。 – Anuj

+0

相反,我想要的東西類似於: GRANT ALL ON *。* TO'jeffrey'@'localhost'; GRANT SELECT ON db1。* TO'jeffrey'@'localhost'; 但是這不起作用。我獲得了甚至db1的所有權限。 – Anuj

+0

是的,我看到你的問題。我試過給用戶一個創建權限的測試,並且我能夠使用該用戶ID創建一個新的數據庫,但是用戶ID在創建的數據庫上沒有任何權限。需要做更多的研究。 – HeatfanJohn

0

打開mysql命令提示符。

要爲任何主機使用%創建時,主機是localhost然後一個新的用戶使用此命令

CREATE user 'test_user'@'localhost' identified by 'some_password'; 

,這樣

CREATE user 'test_user'@'%' identified by 'some_password'; 

一旦用戶創建,您需要授予一些訪問。爲此使用以下命令。

GRANT SELECT,INSERT,UPDATE 
ON database_name.table_name 
TO 'test_user'@'localhost'; 

上述查詢的成功執行後,test_user可以選擇,在table_name中數據庫名稱(數據庫名稱)的插入和更新(表的名稱)。

-2

grant privilege在數據的基礎上給出了這樣

grant privilege on object to user 

object任何數據庫表或關係,user可能是人的特權提供給他。

grant select,insert,update,on object name to user name 

grant select on employee to john with grant option; 

revoke delete on employee from john.