2011-09-06 123 views
1

創建用戶通過MySQL管理到mysql命令行連接,但無法登錄mysql命令行在MySQL中,設置權限

下上線的建議,以root身份發出

grant all on *.* to new_user; 

它的工作,但安全明智的是一個爛攤子,所以發出

revoke all on *.* from new_user; 

現在new_user可以仍然連接,但安全性是健全的,如設置在MySQL管理員

對我來說這是徹底hocus-pocus。到底發生了什麼,以及如何真正啓用登錄?

這似乎是一個MySQL管理員問題(謝謝@marco)。如果在mysql命令行中發出相同的GRANT,用戶可以登錄;但它的補助,局方頒發,用戶無法日誌中

爲@marco指出,任何訪問將授予給用戶,例如,SELECT權限的MySQL登錄訪問 - 他們需要在msql命令行中輸入。

+0

嘗試在serverfault.com。而且您沒有提供關於如何建立連接的基本信息 – ajreal

回答

1

這是因爲當你第一次使用GRANT時,用戶是自動創建的;當你撤銷權限時,用戶仍然是...
檢查這個link

首先,您應該只給予您的用戶他真正需要的權限。
第二:只允許用戶訪問他應該看到/處理的數據庫或表。
例子:

GRANT SELECT,INSERT,UPDATE ON mydb.* TO 'jeffrey'@'localhost'; 

GRANT SELECT ON db2.invoice TO 'jeffrey'@'localhost' 
IDENTIFIED BY PASSWORD 'sdsd'; 

編輯:
只是爲了證明我在說什麼:
輸入mysql的控制檯(mysql -u root -p),然後鍵入

USE mysql; 
SELECT * FROM user; 

呦你會看到MySql裏面有用戶。
那麼,現在使用GRANT就像你對一個還不存在的用戶那樣;然後重複SELECT * FROM user;:您將看到新的用戶創建!

+0

以爲用戶是在MySQL Administrator中創建的。當然,在那裏設置的特權正確無誤。 –

+0

也認爲'創建用戶'被用來創建用戶 –

+0

@cc young:是的,你可以使用'CREATE USER'創建用戶;無論如何,當你使用'GRANT'如果用戶存在特權分配給他,否則用戶被創建和權限分配。嘗試猜測:) – Marco