PHP es MySQL problema

 ( Ligend | 2004. szeptember 27., hétfő - 8:39 )

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Osszekarmolom magam! Megvan a "hiba" oka...

---------------------------------
Name: SQL safe mode setting

Directive: sql.safe_mode

Type: boolean

Synopsis: If the SQL Safe Mode option is enabled the MySQL and Ingres extensions will ignore the supplied host, user and password information and will use only the default ones.
---------------------------------

Mentsegemre szoljon, hogy nem en alitottam On-ra. A hozzaszolasokat es a tippeket koszonom, szamomra mindenkeppen hasznos volt ez az eset.

Hello!

Shell-bol inditva a mysql-t szepen beenged a megadott felhasznaloval es a jelszavaval. Viszont PHP script-bol a doksibol kilesett mysql_connect peldaval nem. A kerdeses parameterek meg vannak adva (hoszt, user, password), viszont a log tanulsaga szerint a file tulajdonosaval probal a localhost-ra csatlakozni, raadasul jelszo nelkul. Mintha siman parameterek nelkul hivnam meg a mysql_connect() fuggvenyt. A hosztot probaltam localhost-tal, IP cimmel, porttal es nelkule azonositani, de semmi valtozas. Csak akkor megy, ha a file tulajdonosanak nincs jelszava a mysql-ben, az meg ugye nem szerencses.

A csomagok (debian testing):

php4 4.3.8-12
php4-common 4.3.8-12
php4-mysql 4.3.8-12
apache 1.3.31-6
apache-common 1.3.31-6
apache-utils 1.3.31-6
libmysqlclient10 3.23.56-2
libmysqlclient12 4.0.21-3
mysql-client 4.0.21-3
mysql-common 4.0.21-1
mysql-doc 4.0.21-2
mysql-server 4.0.21-3

A my.cnf az alap, ami a csomaggal jon. A php4.ini-ben szerepel a extension=mysql.so sor - es ugy altalaban megy is az egesz, csak a connect nem adja at a parametereket. Van valakinek otlete, hogy mi lehet a megoldas? Ideiglenesen a jelszo nelkuli megoldas megy, de ez igy nem maradhat. A neten keresgeltem, talaltam is hasonlo problemat, de megoldassal ott sem szolgaltak. Help! :(

Barmifele segitsegert elore is halas vagyok.

a php scriptek az apache userével szoktak futni (nobody, vagy valami hasonló), nem láttam még olyat, h a fájl tulajdonosának jogosultságával futna :?

Olyan juzerként futnak, amit beállítasz a php.ini-ben, safe módban pedig nézi, ki a tulaj, tehát nem elképzelhetetlen...
Csak tapogatózom: socket, vagy tcp, amin csatlakozni próbálsz?
Mit csinál, ha localhost helyett 127.0.0.1-et írsz?
Tuti jó a script? Másold be ide pls a kérdéses részt!

------- index.php -----
<?php
$hostname = "localhost:3306";
$username = "fakeuser";
$password = "PaSsWoRd";

$link = mysql_connect($hostname, $username, $password) or die("Unable to connect");
print("Connection established");
mysql_close($link);
?>
-------------------------

Az eredmenye:
------- mysq.log --------
040927 9:08:16 8 Connect Access denied for user: 'ligend@localhost' (Using password: NO)
---------------------------

$hostname helyere irtam mar kulso/belso IP-t, localhost-ot, 127.0.0.1-et. Ha nem is mindhez, de vagy 2-hoz probaltam portot is megadni, de ugyanaz. Eloszor a mysql_connect parameterei nem valtozok voltak, hanem sztringek (" " kozott), de ugyanaz.

Ha segit, itt egy phpinfo() kimenet:
http://wall.econ.klte.hu/~ligend/phpinfo.php

Szia, nekem gond nelkul megy - igaz pconnect-et hasznalok. Meg olyan tippem lenne esetleg, hogy a mysql adatbazis user tablajaban lenne erdemes megnezni, hogy a kerdeses host, db es user nevekkel szerepel-e bejegyzes?

Udv,
Csabi

Kommentezd ki a /etc/mysql/my.cfg-ben a skip-networking-et, majd restartold mysql-t.

Udv,
xoraxax

Mint írta, parancssorból megy...

Igy van, parancssorbol OK a dolog, csak a mysql_connect hagyja figyelmen kivul a parametereket. A tablak szerintem rendben vannak...

[quote:1df5c95baa="drojid"]Mint írta, parancssorból megy...[/quote:1df5c95baa]

parancssor unix socketen keresztul kommunikal, nem networkon...
hagyja ki a hostot, csak user es pw es akkor socketen at megy php is

[quote:9b1839f684="drojid"]Mint írta, parancssorból megy...[/quote:9b1839f684]

Parancssorbol socket-en megy szerintem. De a scriptjeben nem socket, hanem port connect-et akar 3306-ra. Emiatt kellene kommentezni a skip-networking, nem? Ha socketet akar legyen csal localhost, esetleg a server parameterben adja meg a socket eleresi utvonalat is a port helyett.

Udv,
xoraxax

Ha jol vettem ki a doksibol, igy is meg lehet adni, es akkor socket-en at kapcsolodna:

$link = mysql_pconnect("localhost:/var/run/mysqld/mysqld.sock", "user", "password") or die("Unable to connect");

Ez igy jo, vagy felreertettem?

Mindenesetre igy sem megy. :x

Szerintem egyszerűbb a 3306-os port elhagyása a mysql_connect-ben, mint a skip-networking kikommentezésével engedélyezni a mysql szerver hálózatos elérését. A mysql sem ajánlja a skip-networking kikommentezését.

[quote:a142247821="Ligend"]Ha jol vettem ki a doksibol, igy is meg lehet adni, es akkor socket-en at kapcsolodna:

$link = mysql_pconnect("localhost:/var/run/mysqld/mysqld.sock", "user", "password") or die("Unable to connect");

Ez igy jo, vagy felreertettem?

Mindenesetre igy sem megy. :x[/quote:a142247821]
[code:1:a142247821]$link = mysql_connect("localhost", "user", "password") or die("Unable to connect");[/code:1:a142247821]
Így miért nem jó neked?

[quote:de7f7f85f3="slinky"][quote:de7f7f85f3="drojid"]Mint írta, parancssorból megy...[/quote:de7f7f85f3]

parancssor unix socketen keresztul kommunikal, nem networkon...
hagyja ki a hostot, csak user es pw es akkor socketen at megy php is[/quote:de7f7f85f3]
Tok jol ellovagoltok a tcp vs unix-socket kapcsolodason, de azt senki nem veszi eszre, hogy access denied-ot kap vissza?! Szerintetek ha a kapcsolattal lenne gond, ilyen hibat kapna? Aligha. Nezegesd a php.ini-t, probalj meg ott megadni permanensen egy usert/pwt (ofkoz csak teszt celjabol), hatha tobb minden kiderul.

Azért lovagolunk azon, mert nem az a baj, hogy access denied, hanem hogy nem jó juzernél nézi :(