在伺服器上無法連接資料庫的問題

edited 十月 2013 in 資料庫
我在本機(Windows XP)上安裝了 Apache, PHP, MySQL, 並在本機上測試執行的網頁, 連接資料庫及顯示資料表記錄一切都很正常無誤。而當網頁放於伺服器(Linux)上執行時,連接資料庫時就出現下列錯誤訊息。

Warning: mysql_connect() [function.mysql-connect]: Access denied for user: '[email protected]' (Using

password: YES) in /home/mobilephone/www/www/viewcart.php on line 24

我們的網頁是寄存於外間提供網站寄存的公司,是支援 PHP+MySQL ,可透過遙距 PhpMyAdmin 處理資料表及使用者,而使用者 [tempuser]的權限及相關的資料表肯定是正確的。
下列是 line24 and line25 的程式碼
$link = mysql_connect("localhost", "tempuser", "27215008") or die("Could not connect"); /* MySql Server */
mysql_select_db("mobilephone_db") or die("Could not select database mobilephone_db");

請各大大幫忙, 先行謝過

原始討論: http://twpug.net/x/modules/newbb/viewtopic.php?topic_id=3623

評論

  • edited 九月 2008
    因為你的 mysql 權限只有開放給遠端主機,沒有開給 localhost
  • edited 九月 2008
    請問如何開放給 localhost, 請詳細說明之
  • edited 九月 2008
    Kiang
    請體諒我只是一名新手,我還是摸不著頭腦,你所謂 " 沒有開給Localhost" 的問題 ?!
    我曾使用 [tempuser] 可成功登入 PHPMYADMIN,
    並在 PHPMYADMIN 首頁的使用者一欄顯示是 [[email protected]]。
    我可以肯定登入的是 Server 上的 PHPMYADMIN,而不是本機(Windows XP)上的 PHPMYADMIN。
    問題是使用者 [tempuser] 可透過 PHPMYADMIN 連接資料庫,
    卻不能透過上列的程式碼去連接資料庫。
    問題是否另有玄機 ??
    我看過你所提的超連結網頁有關 'Grant' 的使用,你是否要我留意使用者的權限嗎?
    我在新增使用者[tempuser]的同時已有給予它一些基本的權限。所以不會是權限的關係吧!!
    恕我愚昧,我還是找不到問題的所在及解決方法
    請多多指點, 謝謝
  • edited 九月 2008
    如果你確定在伺服器上能夠透過同樣的帳號密碼登入 phpMyAdmin ,那應該不會出現這個錯誤訊息,因為訊息的提示是無法透過這組帳號、密碼登入。

    1. Server 端 phpMyAdmin 是自己上傳的還是網站寄存的公司提供?
    2. 如果有最高權限, 登入 phpMyAdmin 後執行下面查詢:
    SELECT * FROM `mysql`.`user` WHERE `Host` = 'localhost' AND `User` = 'tempuser';
    
    如果有找到但還是無法登入,試著重設密碼;如果找不到就表示這個使用者沒有確實授權。

    如果網站寄存的公司使用了 Cpanel 之類的管理程式,資料庫使用者名稱應該是 xxx_tempuser 。

    並非我刻意刁難你,是你提供的資訊並不足以判斷確切的問題點,而這個錯誤訊息很明顯的是帳號、密碼或權限設定問題造成。
  • edited 九月 2008
    試用執行上列的查詢, 結果是

    #1142 - SELECT command denied to user 'tempuser'@'localhost' for table 'user'

    這個代表什麼呢 ??

    另外, phpmyadmin 是網頁寄存公司所提供的。
  • edited 九月 2008
    [email protected]用户没有授权对db的user表‘select’操作权限;
    sql命令:show grants for 'tempuser'@'localhost';可以查看你的用户都有什么权限;
    grant all on $your_db_name.* to [email protected] identified by '$your_db_pwd';
    以上命令完成对用户tempuser通过localhost主机访问$your_db_name的全部权限;这个命令并不是你能运行的,

    不过根据你的上述信息可能情况有2种:
    1.網頁寄存公司所提供的tempuser用户并不是通过localhost来访问你的db;
    2.建立了用户但是并没有正确授权db的权限给你的tempuser;
Sign In or Register to comment.