2013-10-21 94 views
0

將php更新到13.10後,mysql可以通過任何用戶連接,但無法用正確的用戶選擇數據庫並傳遞。 似乎發送給mysql的用戶是空的而不是root。PHP:mysql_connect()返回true但是mysql_select_db()返回false _ Ubuntu更新

$myconn = mysql_connect('localhost' , 'root' , 'pass'); 
$seldb = mysql_select_db('mydb' , $myconn); 
$er = mysql_error(); 

運行後 $ mycon是:"resource id='2' type='mysql link'"

和 mysql_select_db()返回false;

$ ER是:"Access denied for user ''@'localhost' to database 'mydb'"

請幫助我。 對不起,我的英語不好。

+0

是數據庫從phpMyAdmin的,或者除了你的應用程序的另一個接口可見? – geomagas

+0

嘗試用'127.0.0.1'替換'localhost' – Yang

+0

是的db在phpmyadmin中可見。 –

回答

1

你看的MySQL認爲你'',不root,這是related to this warning from the manual

如果你允許匿名用戶連接到MySQL服務器時,你也應該授予權限給所有本地用戶以USER_NAME @本地主機。否則,當名稱用戶嘗試從本地計算機登錄到MySQL服務器時,將使用mysql.user表中localhost的匿名用戶帳戶(在MySQL安裝期間創建)。有關詳細信息,請參見第6.2.4節「訪問Cotrol,第1階段:連接驗證」。

「Access Cotrol, Stage 1: Connection Verification」狀態:

服務器使用的排序與第一

的最特定主機值這意味着,如果你有一個匿名''@localhost用戶排序行的規則,但少具體(或稍後排序)[email protected]'%'(或類似的東西)定義永遠不會匹配,因爲'匿名'規則匹配。仔細查看最後一個鏈接,以獲得更全面的解釋。

這意味着什麼是您:

我會強烈推薦第二個:你應該有沒有一個匿名用戶需要

+0

我刪除mysql的匿名用戶,但現在的PHP無法連接到MySQL與此錯誤: 「訪問被拒絕用戶'mohammad'@'localhost'(使用密碼:否)」 mohammad是我的Ubuntu用戶,而不是根作爲參數mysql_connect函數。 –

+0

因此,您之前使用匿名用戶,使用您的管理員帳戶來創建該帳戶('GRANT ...無論您喜歡的任何特權......在...到mohammad @ localhost'(可能使用'IDENTIFIED BY'密碼' '',你可以在'〜/ .my.cnf'中存儲它,這樣你就不必一直鍵入它了) – Wrikken

+0

我可以在我的代碼中使用root用戶嗎? –

0

我自己解決這個問題。在php.ini文件中sql.safe _mode已打開。導致mysql_connect()的 始終以匿名Ubuntu用戶身份連接。

在php.ini文件: sql.safe_mode =關