2012-04-15 75 views
1

我在嘗試從遠程主機獲得連接時做了一堆GRANTS。所以我做了:我可以從mysql.user表中刪除陳舊的條目嗎?

GRANT ALL PRIVILEGES ON *.* TO 'prog'@'foobar-dev.foobar.com' WITH GRANT OPTION; 

但是,'foobar-dev'不再存在。並且還有很多其他的條目其它不存在的主機..

我做了以下REVOKE,希望能在mysql.user中的條目將消失:

REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'prog'@'foobar-dev.foobar.com'. 

此設置中的所有列mysql.user爲'prog'@foobar-dev.foobar.com'爲「N」,但刪除該行會不會更好(更清潔)?我沒有刪除該行,因爲這可能會「破壞某些東西」並違反系統表的參照完整性,我不太熟悉。但是,它有點讓人分心,因爲我每次選擇mysql.user來檢查權限時都必須看到它。我一直認爲系統表應該反映現實情況,而不是過去的一個小例子。

那麼,mysql.user「站在自己的位置」,這樣刪除其中的行沒有副作用影響到其他表?維護這張表的正確方法是什麼?

這會打破什麼?

delete from mysql.user where Host = 'foobar-dev.foobar.com' and User = 'prog'; 

TIA!

回答

0

應該沒問題。撤銷權限然後從mysql.user中刪除曾經是在drop user可用之前的建議方法。如果您使用的是最新版本的MySQL,可以使用drop user 'prog'@'foobar-dev.foobar.com';來撤銷權限並在將來從用戶表中刪除。看到http://dev.mysql.com/doc/refman/5.0/en/drop-user.html

+0

很感謝指着我在正確的方向。 – 2012-04-15 20:03:30

相關問題