2013-03-26 103 views
-1
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password'; 
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost' WITH GRANT OPTION; 

連接但當我嘗試從PHP連接:創建MySQL用戶從PHP

mysql_connect("localhost", "newuser", "password"); 

爲NEWUSER我得到:

Access denied for user 'newuser'@'localhost' (using password: YES) 

但根成功地連接。

爲什麼'newuser'無法連接?

其奇怪的,但雖然mysql_connect顯示錯誤,與PDO我可以成功連接。 也許PHP版本5.4.13有一些與mysql_connect函數有關的問題。

求解:開發人員使用mysql_connect(「127.0.0.1」,「newuser」,「evtevtetv $ q」);和PHP認識evtevtetv * $ q *作爲變量。

+0

您可能必須使用127.0.0.1而不是本地主機? (如果你在Windows中編程?) – bestprogrammerintheworld 2013-03-26 16:42:51

+0

當你使用CREATE USER時你不需要這樣做,但是,你可以嘗試運行「FLUSH PRIVILEGES;」與你的MySQL客戶端。 – Tim 2013-03-26 16:43:20

+1

你能通過MySQL控制檯與新用戶連接嗎? – bestprogrammerintheworld 2013-03-26 16:46:35

回答

1

如果您嘗試此操作,該怎麼辦?

CREATE USER 'newuser'; 
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION; 
1

試試這個

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password'; 
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost' WITH GRANT OPTION; 
WITH GRANT OPTION

意味着用戶你是誰授予的權限可以進一步授予它..

我們從來沒有用它來與創建用戶命令

+0

看到這個http://dev.mysql.com/doc/refman/5.0/en/grant.html – alwaysLearn 2013-03-26 16:51:49

1
  1. 你能通過命令行連接嗎?像這樣

    mysql -u newuser -p 
    

    如果你可以,那麼它可能是你的PHP的問題。

  2. 有時您需要重新啓動MySQL才能使更改生效。

  3. 像Alexey說的那樣,嘗試從查詢中刪除@'localhost'以創建用戶名,因爲這可能會導致問題。

  4. 你也應該確保實際上正在通過登錄到MySQL作爲根(mysql -u root -p)創建的用戶,如果用戶與SELECT * FROM mysql.user;存在看,看看用戶名是否存在以及權限是否正確。