[rešeno] [MySQL]:Access denied for user 'ODBC'@'localhost' (using password: NO)

Na Windows sistemu imam nameščen XAMPP in sicer ima vgrajene naslednje različice programov:

+ Apache 2.2.11
+ MySQL 5.1.33 (Community Server)
+ PHP 5.2.9 + PEAR

V PHP skripti se preko

include(\"db.php\")


povezujem na MySQL bazo. Žal mi vedno izvrže tole:
Access denied for user 'ODBC'@'localhost' (using password: NO)


V db.php imam


$dbhost = 'localhost';
$dbuser = 'uporabnik;
$dbpass = 'geslo;
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die (\"\");
$dbname = 'ime_baze';
mysql_select_db($dbname);


Uporabnik je narejen, ima geslo, pravice za dostop do baze. Težava izgine, če vpišem zgornjo kodo direktno v mojo skripto. Naj povem še, da mi to nikoli ni delalo težav in da zadeva lepo teče na online strežniku preko include. Preiskal sem že vse nastavitve v my.ini, apache conf in php.ini pa se mi niti malo ne sanja kje je težava.

Vsaka pomoč je dobrodošla! Hvala!

Komentarji

  • christooss Član Ubuntu.si
    Kaj pa če daš localhost 127.0.0.1?
  • Če si mislil, da spremenim localhost v 127.0.0.1 v skripti: ni efekta :(
  • matic Član
    uredil/-a 5. August, 2009
    Napaka je v tem da skripta sploh ne dobi ukaza mysql_connect... Zakaj ?!
    Ker je skrit v spremenljivki $conn.

    Tvoja koda:

    $dbhost = 'localhost';
    $dbuser = 'uporabnik;
    $dbpass = 'geslo;
    $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die (\"\");
    $dbname = 'ime_baze';
    mysql_select_db($dbname);

    Izpis tvoje kode je:
    mysql_select_db($dbname);

    Skripta NE more dobiti povezave do baze saj je skrita pod spremeljivko.
    Evo napisal sem ti novo skripto ali popravil tvojo staro:


    <?
    mysql_connect (\"localhost\", \"uporabnik\", \"geslo\") or die (mysql_error());
    mysql_select_db(\"ime-baze\");
    ?>


    Pazi pa tudi na narekovaja pri uporabniku in geslu!
    Če pa preuredim tvojo:

    $dbhost = 'localhost';
    $dbuser = 'uporabnik';
    $dbpass = 'geslo';
    $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die (\"\");
    $dbname = 'ime_baze';
    echo $conn;
    mysql_select_db($dbname);


    Obe 2 delujeta!
    SREČNO!
  • Tudi če odstranim $conn, ne deluje. Glede na primere tukaj: http://si.php.net/function.mysql-connect pa se mi zdi, da to sploh ne bi smelo imeti veze.
  • Kami Član Ubuntu.si
    Bilo bi koristno, če bi lahko prilepil celo kodo, ker ta del deluje v redu (del, kjer to povezavo tudi uporabljaš).

    Drugače pa kaže kot, da PHP ne upošteva tvojih podatkov podanih funkciji mysql_connect.

    P.S. Miha je pred urejanjem napisal, da ta način ni dober in je njegov boljši ampak, če se pogovarjamo o tem kateri način je boljši je to sigurno no-go (razen za kakšne male skripte).

    Idealno je, da bi uporabljal PDO ali pa vsaj MySQLi razširitev.
  • Glede na primer na php.net je tudi tvoja koda še vedno nepravilna.
    Primer iz php.net-a
    $link = mysql_connect(':/tmp/mysql', 'mysql_user', 'mysql_password');
    if (!$link) {
    die('Could not connect: ' . mysql_error());
    }
    echo 'Connected successfully';
    mysql_close($link);

    pri if stavku je $link uključen.

    Sedaj pa prosim uporabi nasledno kodo:

    <?
    mysql_connect (\"localhost\", \"uporabnik\", \"geslo\") or die (\"Problem s povezavo na host!\");
    mysql_select_db(\"ime-baze\") or die (\"Problem s povezavo z bazo!\");
    ?>


    Probaj tole sigurno deluje! Čene je nekaj močno narobe. Tvoj primer pa nikakor ne deluje!
  • Sem uporabil kodo in ni efekta (kot sem predvideval). Problem je gotovo nekje v pravicah, saj brez include moja koda dela, preko include pa noče.
  • matic Član
    uredil/-a 6. August, 2009
    Aha! Poj je pa problem v include!
    Mislim da si pozabil ";"!
    Tvoja koda

    include(\"db.php\")

    Ni ni podpičja!! :D

    Daj tole:

    include(\"db.php\");


    Ali:

    include_once(\"db.php\");


    Če pa to ne deluje sem pa brez idej! :D SREČNO
  • To je vse urejeno, je podpičje, ker drugače bi se tako ali tako PHP pritoževal :P
  • Našel sem težavo. Bila je, kot sem predvideval v include("db.php"). Iz neznanih razlogov PHP ni vključil datoteke :rolleyes: , je pa to storil ko sem zapisal celotno pot na disku do nje. Očitno nek security feature nove verzije PHPja. Bolj me čudi, da PHP ni izvrgel nobene napake :o . Sem pa do rešitve prišel čisto slučajno ob preizkušanju wordpressa, ki je čudežno deloval.
Za komentiranje se prijavite ali pa se vpišite.