MySQL / Apache Error PHP MySQL lekérdezés

szavazat
23

Kapok a következő hiba:

Hozzáférés megtagadva felhasználó az 'apache' @ 'localhost' (using jelszó: NO)

Ha az alábbi kódot:

<?php

include(../includes/connect.php);

$query = SELECT * from story;

$result = mysql_query($query) or die(mysql_error());

echo <h1>Delete Story</h1>;

if (mysql_num_rows($result) > 0) {
    while($row = mysql_fetch_row($result)){
          echo '<b>'.$row[1].'</b><span align=right><a href=../process/delete_story.php?id='.$row[0].'>Delete</a></span>';
      echo '<br /><i>'.$row[2].'</i>';
    }
}
else {
   echo No stories available.;
}
?>

A connect.phpfájl tartalmazza az én MySQL kapcsolja a hívásokat, amelyek jól működik az én INSERT IGNORE lekérdezés egy másik részét a szoftver. Ha megjegyzésbe a $result = mysql_queryvonalon, akkor megy át a else. Tehát ez az a vonal, vagy a tartalmat az if.

Arra kerestem a neten olyan megoldásokat, és a legtöbb úgy tűnik, hogy kapcsolatban túl sok MySQL kapcsolatok, vagy hogy a felhasználó én belép MySQL nincs engedélye. Azt ellenőrizték mindkettő. Azt is végrehajthatja a többi lekérdezés máshol a szoftvert, és ellenőrizte, hogy a fiók a megfelelő engedélyekkel.

A kérdést 05/08/2008 22:45
a forrás felhasználó
Más nyelveken...                            


11 válasz

szavazat
10

És ha ez számít egyáltalán, apache @ localhost nem a neve a felhasználói fiók, amit használni bejutni az adatbázisba. Nem rendelkezik felhasználói fiókkal a név apache bennük egyáltalán, hogy az ügyben.

Ha azt mondja az „apache @ localhost” a felhasználónév nem kapok át rendesen a MySQL kapcsolat. „Apache” általában az a felhasználó, hogy fut a httpd folyamat (legalább RedHat alapú rendszerek), és ha nincs felhasználóneve vezetjük a kapcsolat során MySQL használ akárkit szólít fel a kapcsolatot.

Ha ezt a kapcsolatot közvetlenül a forgatókönyvet, nem is hívott fájl, akkor kap ugyanaz a hiba?

Válaszolt 06/08/2008 01:05
a forrás felhasználó

szavazat
4

Változás az include () a require (). Ha a „connect.php” fájlt nem lehet require () d, a szkript nem végzetes hiba, mivel az include () csak generál egy figyelmeztetés . Ha a felhasználónév te halad mysql_connect () nem „apache”, helytelen utat a connect script a leggyakoribb módja, hogy ez a típusú hiba.

Válaszolt 21/10/2008 19:30
a forrás felhasználó

szavazat
2

Haver a válasz egy nagy DUH! sajnos ez elvitt egy darabig, hogy kitaláljuk is. Valószínűleg van egy funkció, mint dbconnect (), és az Ön által használt változók include fájlt, hogy a kapcsolatot. $ Conn = mysql_connect ($ dbhost, $ dbuser, $ dbpass).

Nos, mivel ez egy függvényen belül a változókat az include fájl kell átadni a funkciót, különben a függvény nem fogja tudni, hogy mi $ dbhost, $ dbuser és $ dbpass van. Egy út-hoz erősít ez az, hogy azokat a változókat globális, így a funkciók értük. A másik megoldás, ami nem túl biztonságos lenne, hogy írjon ki a házigazdaként, használati és adja át a mysql_connect funkció.

Remélem ez segít, de ugyanaz volt a probléma.

Válaszolt 02/03/2009 20:47
a forrás felhasználó

szavazat
2

Vajon a connect.php script ténylegesen, hogy a kapcsolat, vagy nem csak egy függvény definiálása meg kell hívni, hogy hozzon létre egy kapcsolat? A hiba kapsz tüneti, hogy nem egy korábban létrehozott kapcsolat egyáltalán.

ETA: megváltoztathatja a közé a igényelnek. Gyanítom, hogy ez valójában nem beleértve a fájl egyáltalán. De közé is hibaüzenet nélkül.

Válaszolt 21/10/2008 18:57
a forrás felhasználó

szavazat
2

Ne felejtsük el, hogy az adatbázis hiba naplóit. Meg kell tudni, hogy ha még üti a DB. Ha nem, akkor ellenőrizze a tűzfal szabályok a doboz. Linuxos futtatható iptables -L, hogy a tűzfal listaszabályokat.

Egyébként ez lesz a tiszta hozzáférés kérdése. Ne a „select * from mysql.user”, hogy ha az Apache felhasználó még létre ott. Továbbá, azt javasoljuk, hogy hozzon egy olyan számla, az alkalmazáshoz szemben a segítségével apache, mivel minden más alkalmazást hoz létre fog futni, mint az Apache alapértelmezett és kaphat a jogosulatlan hozzáférést a db.

Csak nézd up „támogatás” a dokumentációban @ dev.mysql.com, hogy minél több információt. Ha konkrétabb questiosn kapcsolatos db, csak szerkeszteni a kérdést, és én majd nézd meg.

Válaszolt 21/10/2008 18:53
a forrás felhasználó

szavazat
2

Vajon az apache felhasználó jelszót igényelnek kapcsolódni az adatbázishoz? Ha igen, akkor az a tény, hogy azt mondja: „jelszóval: NO” vezetne, hogy elhiggyem, hogy a kódot próbál csatlakozni jelszó nélkül.

Ha azonban az apache felhasználó nem kér jelszót, a kettős ellenőrzés a jogosultságok is egy jó ötlet (amit megemlített bejelölve). Ez lehet hasznos kipróbálni végrehajtó ilyet egy mysql parancsot:

GRANT ALL PRIVILEGES ON `*databasename*`.* to 'apache'@'localhost';

Ez szintaktikai megfelelőnek kell lennie.

Más, mint, hogy én csak a kivágott, mint te.

Válaszolt 05/08/2008 22:56
a forrás felhasználó

szavazat
2

Csak, hogy ellenőrizze, ha használja csak ezt a részét hibaüzenetet kap?

<?php
include("../includes/connect.php");

$query = "SELECT * from story";
$result = mysql_query($query) or die(mysql_error());

Ha igen, akkor is kap egy hiba, ha másolja be egy ilyen szúr be ezt az oldalt, igyekszem, hogy ha ez a helyi az oldalt, vagy hogy a tényleges vonalon.

Is, meg tudja küldeni egy példányt a kapcsolatot hívások (mínusz jelszavak), kivéve, ha a betétek használata pontosan ugyanazt a szintaxist, mint ebben a példában.

Válaszolt 05/08/2008 22:52
a forrás felhasználó

szavazat
1

Emlékszel tenni:

flush privileges;

Ha a felhasználó nem jön létre, akkor ez adja a „apache” @ „localhost” hiba.

Válaszolt 19/09/2013 11:46
a forrás felhasználó

szavazat
1

Akkor tegye a következőket:

  • Add a felhasználó „apache”, és a telepítést a jogosultságokat phpmyadmin vagy a mysql egy shell
  • Mondd php fut mysql_connectegy másik felhasználó, aki már rendelkezik a szükséges jogosultságokkal (de talán nem gyökér), keresse mysql.default_user a php.ini állományban.
Válaszolt 21/06/2009 22:06
a forrás felhasználó

szavazat
1

Csak, hogy ellenőrizze, ha használja csak ezt a részét hibaüzenetet kap?

Ha igen, akkor is kap egy hiba, ha másolja be egy ilyen szúr ebbe> oldalon igyekszem, hogy ha ez a helyi az oldalt, vagy hogy a tényleges vonalon.

Is, meg tudja küldeni egy példányt a kapcsolatot hívások (mínusz jelszavak), kivéve, ha a betétek> használata pontosan ugyanazt a szintaxist, mint ebben a példában.

Itt van, amit a connection.php fájlt. Azt kapcsolódik a fájl keresztül bele ugyanolyan módon, mint ahol én végre az INSERT MELLŐZ lekérdezések máshol a kódot.

$conn = mysql_connect("localhost", ******, ******) or die("Could not connect");
mysql_select_db("adbay_com_-_cms") or die("Could not select database");

Megpróbálom a dolgozó INSERT MELLŐZ keresett ezen a területen, hogy ellenőrizze, hogy ki.

Ahogy a többiek meg feltenni a jelszót hozzáférést. Tettem, amint az az első kiküldetés, ellenőrizd a jogosultságokat. Régebben phpMyAdmin annak igazolására, hogy az engedélyeket a felhasználói fiók amit használtam helyesek voltak. És ha ez számít egyáltalán, apache @ localhost nem a neve a felhasználói fiók, amit használni bejutni az adatbázisba. Nem rendelkezik felhasználói fiókkal a név apache bennük egyáltalán, hogy az ügyben.

Válaszolt 05/08/2008 23:40
a forrás felhasználó

szavazat
1

Ha valóban meg tudja beilleszteni a kapcsolatot használó hívások, a probléma valószínűleg abban rejlik, hogy a felhasználó „apache” nem rendelkező SELECT jogosultságokat az adatbázis. Ha van phpMyAdmin telepítve van, nézd meg a jogosultságokat, hogy a felhasználó a jogosultságok panelben. phpMyAdmin is teszi nagyon könnyen módosítható a jogosultságokat.

Ha csak van, hogy a parancssorban, akkor ellenőrizze a jogosultságokat a mysql adatbázis.

Akkor valószínűleg meg kell csinálni valamit, mint például:

GRANT SELECT ON myDatabase.myTable TO 'apache' @ 'localhost';

Válaszolt 05/08/2008 23:02
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more