[ ljuba @ 15.01.2002. 13:51 ] @
Cao,

Pokusavam da postavim bazu na server, koja kod mene radi na localhost-u super.

Podesim user name i pass za bazu, ali sta god napisao za host ... bilo localhost bilo ime servera www.ime.com dobijem odgovor:

DATABASE:

Warning: Access denied for user: 'www-data@localhost' (Using password: NO) in /home/la008vma/www/home/Baza/kreiraj.php on line 3

Warning: MySQL Connection Failed: Access denied for user: 'www-data@localhost' (Using password: NO) in /home/la008vma/www/home/Baza/kreiraj.php on line 3

Warning: MySQL: A link to the server could not be established in /home/la008vma/www/home/Baza/kreiraj.php on line 3
Error creating database: Access denied for user: 'www-data@localhost' (Using password: NO)

Znaci bilo da napisem:

<?php
// Podesavanje podataka za pristup bazi
$host = "www.ime.com";
$username = "un";
$password = "pa";
$ladb = mysql_connect($host, $username, $password);
mysql_select_db("imebaze",$voiddb);
?>

ili

<?php
// Podesavanje podataka za pristup bazi
$host = "localhost";
$username = "un";
$password = "pa";
$ladb = mysql_connect($host, $username, $password);
mysql_select_db("imebaze",$voiddb);
?>

Sta je problem? Username i password su dobri 100% jer sam ih dobio od administratora i vlasnika domena.

LJUBA
[ Jbyn4e @ 15.01.2002. 14:26 ] @
Citat:
ljuba:
<?php
// Podesavanje podataka za pristup bazi
$host = "localhost";
$username = "un";
$password = "pa";
$ladb = mysql_connect($host, $username, $password);
mysql_select_db("imebaze",$voiddb);
?>


Hm, paz' vako, nesto mi je tu cudno. Prvo, ne vidim gde si definisao $voiddb? Drugo, mislim (obicno ne koristim mysql_select-db) da to $voiddb u stvari treba da ti bude $ldab, jer po dokumentaciji:
Citat:

int mysql_select_db (string database_name [, int link_identifier])

mysql_select_db() sets the current active database on the server that's associated with the specified link identifier. If no link identifier is specified, the last opened link is assumed. If no link is open, the function will try to establish a link as if mysql_connect() was called, and use it.

ukoliko ti to nije podeseno, on uzima neki "last opened", pa je moguce da to nije uopste link ka tvojoj bazi koju pokusava da otvori, i zato daje pogresan user i pass, jer pokusava da pristupi nekoj drugoj bazi.

Ja obicno pristupam bazi na sledeci nacin (naravno, definisu se promenljive $host, $user, $sifra,$baza):
Citat:

$cid=mysql_connect($host,$user,$sifra);
$query="select *(ili neko polje) from naziv_tabele where uslov";
$rez=mysql_db_query($baza,$query);

[ Gojko Vujovic @ 15.01.2002. 14:32 ] @
Nije problem u mysql_select_db jer mu scripta ni ne stigne do tog dela, pošto se ni ne poveže na server kako treba.

Osim što od administratora servera treba da dobiješ mysql user, pass i ime baze, treba da dobiješ i hostname preko koga se povezuješ, tj najbitnije - podatak da li mysql server sluša na tcp portu ili unix socketu?

Kada saznaš taj podatak -- javi, pa ćemo ti dati ispravan kod za povezivanje.
[ ljuba @ 16.01.2002. 12:03 ] @
Cao svima,

Hvala puno na pomoci. Danas su ipak javili da su to zaboravili da mi kazu pa da je host ipak:

$host = "mysql.mama.inode.at";

Neznam jesu li to oni mislili da gledam u pasulj pa da ovo saznam ili sta posto nigde na serveru ni u FAQ nema ovaj podatak!?

PS: Jel moze objasnjenje razlika ako 'slusa' na TCP a ako slusa na UNIX socket-u? Hvala.

Jos jednom hvala puno.

LJUBA
[ Gojko Vujovic @ 16.01.2002. 15:12 ] @
Hehe dopada mi se ovo za pasulj :)

MySQL server može otvoriti TCP port, i administrator onda omogući da se preko njega povezuju klijenti sa iste ili drugih mašina. U slučaju kada se na istoj mašini nalaze i web server i mysql server, nema potrebe za otvaranjem TCP porta (jer je to potencijalna sigurnosna rupa), i MySQL server se podešava tako da klijenti sa istog servera komuniciraju sa njim preko (najčešće) /tmp/mysql.sock socket fajla.

Ukoliko u php-u kao hostname uneseš localhost, koristiće se druga metoda (mysql.sock). U svakom drugom slučaju (hostname, ip adresa, itd..) povezivanje će ići preko porta, bez obzira da li se radi o udaljenoj ili lokalnoj mašini.
[ ljuba @ 16.01.2002. 16:04 ] @
Hvala na objasnjenju.

LJUBA
[ B o j a n @ 16.01.2002. 20:30 ] @
A ja imam pitanjce, ukoliko su u mysqld i httpd na istom hostu, zar ne moze da se ostvari komunikacija preko localhosta ?
Tu ne vidim nikakve potencijalne opasnosti, i koja je razlika u perfomansama ukoliko se komunikacija odvija preko socket fajla, ili preko TCP konekcije ( lo na primer ) ?
[ ljuba @ 16.01.2002. 21:12 ] @
Koja je razlika sa programerske strane ako ide preko tog socketa ... znaci kako bi islo ovo moje da nije preko tcp na ovom serveru?

Hvala
[ Gojko Vujovic @ 16.01.2002. 21:56 ] @
>A ja imam pitanjce, ukoliko su u mysqld i httpd na istom hostu, zar ne moze da se ostvari komunikacija preko localhosta ?

Gle ovako.. Ako kao host staviš "localhost", ide preko socketa. Ukoliko mysql server nije konfigurisan da otvara socket i komunicira preko njega, nećeš naravno ni uspeti da se povežeš. Dakle, ukoliko su httpd i mysqld na istom serveru, imaš dve opcije. Inače, samo jednu - tcp port, a to se sa programerske strane postiže unošenjem hostname-a ili ip adrese umesto prosto "localhost". Ukoliko je ista mašina u pitanju, ne znam da li ima razlike u brzini pristupa preko jednog i drugog metoda, mada je čak moguće da je varijanta bez tcp-a brža. No, verovatno ne nešto primetno, jer bi je više forsirali u tom slučaju. Imaš mysql test programe kojima to možeš proveriti.

>Koja je razlika sa programerske strane ako ide preko tog socketa ... znaci kako bi islo ovo moje da nije preko tcp na ovom serveru?

Umesto ovoga:

$host = "mysql.mama.inode.at";

imao bi ovo:

$host = "localhost";

To je sva mudrost.

Naravno, u tom slučaju se mysql server mora nalaziti na istom serveru i omogućavati konekcije preko socket fajla i grant tabele moraju biti pravilno podešene kao i uvek. To su uglavnom najčešći previdi zbog kojih administratori ili webmasteri imaju problema sa mysql-om.