2011-09-28 52 views
0

我的Windows機器上運行着MySQL服務器,我想添加能夠從任何主機連接到它的用戶。爲了做到這一點我使用的語句MySQL:與主機有關的問題

CREATE USER「USER_NAME」 @「%」 IDENTIFIED BY「user_pw」

但是當我嘗試使用這個新的用戶連接本地,它失敗。現在我通過調用CREATE USER兩次解決了這個問題,第一次使用'%'作爲主機,第二次使用'localhost',但我想知道是否有另一個解決方案或某些選項需要在服務器上更改

+0

由於您是新手,我記得您應該[接受答案](http:// meta。 stackexchange.com/questions/5234/how-does-accepting-an-answer-work)如果你認爲它解決了(或幫助解決)你的問題 – Marco

回答

0

來自here

以root身份連接到服務器後,您可以添加新帳戶。下面的語句使用GRANT來設置四個新賬戶:

mysql> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass'; 
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost' 
    ->  WITH GRANT OPTION; 
mysql> CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass'; 
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%' 
    ->  WITH GRANT OPTION; 
mysql> CREATE USER 'admin'@'localhost'; 
mysql> GRANT RELOAD,PROCESS ON *.* TO 'admin'@'localhost'; 
mysql> CREATE USER 'dummy'@'localhost'; 

其中兩個賬戶有蒙蒂的用戶名和some_pass的密碼。這兩個帳戶都是擁有完全權限的超級用戶帳戶。 只有從本地主機連接時才能使用'monty'@'localhost'帳戶。 'monty'@'%'帳戶在主機部分使用'%'通配符,因此可用於從任何主機進行連接。

有必要有兩個帳戶monty能夠從任何地方連接monty。如果沒有localhost帳戶,monty從本地主機連接時,由mysql_install_db創建的localhost的匿名用戶帳戶將優先。因此,monty將被視爲匿名用戶。原因是匿名用戶帳戶具有比'monty'@'%'帳戶更具體的主機列值,因此在用戶表排序順序中更早。 (第5.4.4節「訪問控制,第1階段:連接驗證」中討論了用戶表的排序。)

+0

所以如果我刪除匿名帳戶,我解決了這個問題? – Orgrim

+0

@Orgrim:我不確定這一點。但是我認爲你應該保持MySql的行爲不變,因爲這會讓你有機會更好地檢查登錄,並授予/撤消不需要的數據庫訪問權限...... – Marco