Pripojeni pres unixovy socket
|
11.8.2004 17:13
Jan Houštěk
|
Bezi-li mysql server primo na stroji, kde je provozovan i http server, je vhodne se pripojovat pres unixovy socket, pripojeni pres TCP neni treba a mysqld vubec na tcp/3306 nemusi poslouchat.
Navic chovani php4-mysql modulu je takove, ze uvidi-li jako host "localhost" nebo "127.0.0.1", provede spojeni prave pres socket, takze se nedivte, ze to funguje, i kdyz na 127.0.0.1:3306/tcp nic neposloucha.
Vzhledem k tomu, ze sitova komunikace mysql neni vubec nijak chranena (proti odposlechu, integrite dat apod.), byva vhodne se ji bud zcela vyhnout (provozovanim klienta na stejnem systemu jako server, at uz je klientem cokoliv, treba phpMyAdmin), nebo pouze po duveryhodnych linkach. |
|
|
Re: Pripojeni pres unixovy socket
|
11.8.2004 19:58
Petr Zajíc
|
Je to tak. Originální dokumentace k tomu říká: "Vždy když uvedete "localhost" nebo "localhost:port" jako server, klientská knihovna MySQL na toto nebude brát zřetel a pokusí se připojit na místní soket ("named pipe" na Windows). Chcete-li použít TCP/IP, uvedte "127.0.0.1" namísto "localhost". Pokud se klientská knihovna MySQL pokouší připojovat na špatný soket, měli byste nastavit správnou cestu jako mysql.default_host ve vaší PHP konfiguraci a nechat pole server prázdné."
Experimentálně jsem neověřoval, zda je chování při připojení přes "127.0.0.1" jiné než při "localhost", protože v tom se dokumentace s předchozím příspěvkem rozchází (ale není to nic zásadního).
Možná právě proto, že provoz není nijak chráněn, brání se většina provozovatelů MySQL proti připojením z jiných strojů. Na druhou stranu může provozování MySQL a http serveru na jednom stroji přinášet problémy související s výkonem; v praxi se to ovšem dělá celkem běžně. |
|
|
Re: Pripojeni pres unixovy socket
|
11.8.2004 20:20
Jan Houštěk
|
Ad localhost vs. 127.0.0.1 -- je to v souladu z dokumentaci. Psal jsem to z hlavy, chtel jsem jen zduraznit pripojeni na socket, bez naroku na uplnost a presnost :)
K provozovani databazi na dedikovanem stroji -- ano, to smysl ma, ale to sitove propojeni by melo byt lokalni a maximalne duveryhodne (idealne cross kabel mezi http a DB serverem). Nejen kvuli bezpecnosti, ale take napr. kvuli co nejlepsi dostupnosti DB. |
|
|
Re: Pripojeni pres unixovy socket
|
12.8.2004 20:47
Michal Kubeček
|
...nebo použít stunnel. |
|
|
fuknce nefunguje
|
12.8.2004 10:29
Petr Šigut
|
Proc mi to nefunguje jako funkce?
Vzdycky to vyhodnoti jako ze plati podminka else...
<?php
function db_init() {
if ($_SERVER["SERVER_ADDR"]=="localhost")
{
define("SQL_HOST","localhost");
define("SQL_DBNAME","database");
define("SQL_USERNAME","user");
define("SQL_PASSWORD","password");
}
else
{
define("SQL_HOST","mysql.nekde.cz");
define("SQL_DBNAME","databaze_u_providera");
define("SQL_USERNAME","user2");
define("SQL_PASSWORD","password2");
}
}
|
|
|
Re: fuknce nefunguje
|
12.8.2004 11:07
Petr Zajíc
|
Nevím. Jedna možnost je ta, že server se identifikuje IP adresou, ne tedy jako "localhost". |
|
|
Re: fuknce nefunguje
|
12.8.2004 11:26
Petr Šigut
|
UZ to funguje! byl bych prisahal ze jsem zkousel obe... diky |
|
|
Re: fuknce nefunguje
|
28.6.2009 16:16
swosh
|
vyjel jsem si print_r obsah pole $_SERVER a zjistil jsem
[SERVER_NAME] => localhost [SERVER_ADDR] => 127.0.0.1
takze misto
if ($_SERVER["SERVER_ADDR"]=="localhost")
dejte
if ($_SERVER["SERVER_ADDR"]=="127.0.0.1") |
|
|
Re: fuknce nefunguje
|
22.9.2009 17:13
Josef "Mustapha_CZE" Pavlík
|
Vím, že to tení aktuální, ale solidně jsem se s tímto příkladem potrápil. Děkuji ti moc za vpomoc. Nyní jsem již tento SCRIPT rozběhal. A to díky tobě. Ještě jednou díky. Pepa |
|
|
nefunguje mi to
|
10.4.2005 20:20
Temistokles
|
pouzivam windows xp a vobec mi to neide.
napise mi to len:
Warning: mysql_connect() [function.mysql-connect]: Access denied for user: 'meno@localhost' (Using password: YES) in C:\www\www\index.php on line 2
Nelze se pøipojit k MySQL: Access denied for user: 'meno@localhost' (Using password: YES)
::meno mam zamenene za uzivatela
skusal som to cez IP aj cez "localhost" |
|
|
SERVER_ADDR
|
18.8.2005 12:34
Joe
|
Chtěl bych se zeptat jestli můžu místo ($_SERVER["SERVER_ADDR"]== "localhost") použít ($_SERVER["HTTP_HOST"] == "localhost")? |
|
|
func.php/include--config.php
|
11.1.2008 20:23
rudhas gasper
|
Asi sa vela z Vas pošmyklo na umiestneni config.php Ja som zmenil vo func.php
"include "../../includes/config.php" _ZA_
<?php include ('config.php'); a config.php môže
byt s ostatnymi..
|
|
|
undefinet function
|
6.3.2008 21:53
Dan Pelíšek
|
Dobrý den,
ještě nikdy jsem se nezkoušel připojit k MySQL a teď to dělám poprvé. Napsal sem to přesně podle vašeho příkladu, ale nejde mi to. Napsalo mi to přesně toto: "Fatal error: Call to undefined function mysql_connect()... "
Určitě to bude nějaký triviální problém, ale já si s tým nevím rady, prosím poraďte. |
|
|
Re: undefinet function
|
7.3.2008 00:05
Ondřej Čečák
|
To zni, jako byste nemel v PHP modul pro MySQL.
|
|
|
Re: undefinet function
|
7.3.2008 19:55
Dan Pelíšek
|
a dá se tento modul někde stáhnout a doinstalovat? Nebo rovnou stáhnout celé php obsahující tento modul?
Nyní mám PHP Version 5.2.5, po vypsání funkce phpinfo() se mi na sránce zobrazí pouze jeden údaj obsahující v názvu sql - sql.safe_mode local value-Off master value-Off |
|
|
Re: undefinet function
|
9.3.2008 16:53
Dan Pelíšek
|
Měl jste pravdu, doinstaloval sem si PECL a už to jde.
Kdyby měl někdo stejný problém tak jsem ho stáhnul zde: http://cz.php.net/downloads.php |
|
|
Bezpecnost- pripojeni mysql z php
|
10.10.2009 01:13
rada tanat
|
Preji pekny den,
poustim se do php programovani, nyni s vyuzitim db mysql. Chtel bych se zeptat, jak resit zabezpeceni pro pripojeni k mysql db-jak vyresit bezpecnost prihlasovacich udaju(jmeno, heslo). Na strankach chci vypis nekterych udaju z databaze- na db se chci atuomaticky pripojit, ale vyplneni prihl. udaju v php kodu(mysql_connect ("host","user","pass")) neni pro me moc uklidnujici. Jak resit tento bezpecnostni problem? Predem dekuji za odpoved. R |
|
|
Re: Bezpecnost- pripojeni mysql z php
|
12.10.2009 15:46
Aleš Hakl
|
Ono vam nic lepsiho nez to uvest v kodu nezbyde. Proste ten program musi mit pravo s tou databazi pracovat a tak nejak z definice (at uz si vymyslite cokoli), tak toto pravo ziska i kdokoli, kdo ten program muze zkoumat/spoustet.
Pokud o bezpecnost opravdu jde, tak je vhodne to resit tak, ze takovyto program bude pouzivat sveho specialniho uzivatele v DB, ktery bude mit pouze ta potrebna prava. V extremnim pripade by ty potrebna prava mohla znamenat pouze spoustet ulozene funkce, ktere to budou jeste dale kontrolovat. |
|
|