PHP MySQL sorguda MySQL / Apache hata

oy
23

Aşağıdaki hatayı alıyorum:

Kullanıcı 'apache' @ 'localhost' için reddedildi Access (şifre kullanarak: NO)

Aşağıdaki kodu kullanırken:

<?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.;
}
?>

connect.phpDosya benim MySQL benim ile iyi çalışıyor aramaları bağlamak içeren INSERT IGNORE yazılımın başka kısmında sorgular. Dışarı yorum yaparsanız $result = mysql_queryçizgi, o zaman başka açıklamaya geçer. Yani, o satır Ya da içinde içeriğidir.

Ben herhangi bir çözüm net arama edilmiştir ve en ı izni yok olarak MySQL giriş ediyorum kullanıcıya çok fazla MySQL bağlantıları veya bu ilgili olduğu görülüyor. Ben ikisini de kontrol. Hala yazılımda başka yerde benim diğer sorguları gerçekleştirebilir ve ben hesabı doğru izinlere sahip olduğunu doğruladıktan.

Oluştur 05/08/2008 saat 22:45
kaynak kullanıcı
Diğer dillerde...                            


11 cevaplar

oy
10

hepsi de önemli eğer, apache @ localhost ben veritabanına almak için kullandığınız kullanıcı hesabının adı değildir. Ben bu konuda zaman zaman bunların apache adıyla Herhangi bir kullanıcı hesabı yoktur.

o apache @ localhost 'diyerek Eğer kullanıcı adı MySQL bağlantısına doğru geçirilen almıyor. 'Apache'nin (en azından Redhat'in tabanlı sistemlerde) httpd süreci çalıştıran kullanıcı normal olarak ve hiçbir adı bağlantı sırasında geçirilir MySQL bağlantısı için çağrı gerçekleştiren kişi kullanır.

Eğer komut bağlantı hakkı yoksa, bir denen dosyada, aynı hatayı alıyorum?

Cevap 06/08/2008 saat 01:05
kaynak kullanıcı

oy
4

Include () ile değiştirin gerektirecek (). "Connect.php" dosyası () d gerektiren edilemezse, script başarısız olur , oysa ölümcül hata ile sadece bir uyarı oluşturur () içerir . Eğer () mysql_connect için geçiyoruz kullanıcı adı "apache", değilse bağlantı komut dosyasına yanlış bir yol Bu tür hataları almak için en yaygın yoludur.

Cevap 21/10/2008 saat 19:30
kaynak kullanıcı

oy
2

cevabını Dude büyük bir DUH olduğunu! hangi ne yazık ki hem anlamaya biraz zaman aldı. Muhtemelen dbconnect gibi bir işlevi () varsa ve bağlantı kurmak için bir içerme dosyası değişkenleri kullanıyoruz. $ Conn = mysql_connect ($ dbhost, $ dbuser, $ dbpass).

Bu bir fonksiyonu içindedir Eh beri dahil dosyadan değişkenler neyi $ dbhost, $ dbuser bilemezsiniz fonksiyonu ya da başka işleve geçirilmesi gereken ve $ dbpass olduğunu. Bunu düzeltmek için bir yolu olan değişkenlerin küresel yapmaktır böylece işlevleri onları alabilirsiniz. çok güvenli değildir Başka bir çözüm size ev sahibi, kullanıcı yazmak ve mysql_connect işlevinde geçmek olacaktır.

Umarım bu yardımcı olur ama aynı problem vardı.

Cevap 02/03/2009 saat 20:47
kaynak kullanıcı

oy
2

connect.php komut aslında bağlantı kurmak mı yoksa sadece bir bağlantı oluşturmak için çağırmanız gerekir bir işlevi tanımlar? Aldığınız hata hiç önceden belirlenmiş bir bağlantı olmaması belirtisidir.

ETA: Ayrıca bir gerektirecek şekilde dahil değiştirin. Ben aslında dosyayı hiç dahil değil şüpheli. Ama sessizce başarısız olabilir sayılabilir.

Cevap 21/10/2008 saat 18:57
kaynak kullanıcı

oy
2

veritabanı hata günlükleri kontrol etmeyi unutmayın. Sen bile DB isabet olup olmadığını görmek gerekir. Eğer değilseniz, sen kutuyu güvenlik duvarı kurallarını kontrol etmelidir. Bir Linux kutusunda Güvenlik duvarı liste kurallarını almak için -L iptables çalıştırabilirsiniz.

Aksi takdirde saf erişimi sorunu olacaktır. apache kullanıcı bile orada ayarlandıysa bir "mysql.user seçin *" Do görmek için. Ayrıca, ben varsayılan olarak apache olarak çalışacak yaratan başka app beri, apache kullanarak aksine uygulamanız için özel olarak bir hesap oluşturarak öneriyoruz, ve db'den yetkisiz erişim alabilir.

Sadece daha fazla bilgi almak için dev.mysql.com @ belgelerinde "GRANT" bakmak. Eğer, db ile ilgili daha spesifik questiosn varsa İşletme soruyu düzenlemek ve ben bir göz atacağız.

Cevap 21/10/2008 saat 18:53
kaynak kullanıcı

oy
2

apache kullanıcı veritabanına bağlanmak için bir şifre gerektiriyor mu? Eğer öyleyse, o zaman "şifreyi kullanarak: HAYIR" diyor gerçeği kodu şifre olmadan bağlanmaya çalıştığı inanmak bana yol açacak.

Ancak apache kullanıcı parola gerektirmiyorsa, izinlerin çift kontrollü bir (zaten sizden bahsetti işaretli olan) iyi bir fikir olabilir. Hala mysql istemine böyle bir şey yürütme denemek faydalı olabilir:

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

Bu sözdizimi doğru olmalıdır.

senin kadar Stumped olarak Bunun dışında, ben sadece.

Cevap 05/08/2008 saat 22:56
kaynak kullanıcı

oy
2

Eğer kullanırsanız Sadece kontrol etmek sadece bir hata ile karşılaşırsanız bu bölümü?

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

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

Eğer öyleyse, hala kopyalamak eğer bir hata alıyorum ve bu sayfaya o Ek'lerin birini yapıştırırım, bunu sayfası veya o fiili hattına lokal olup olmadığını görmek için çalışıyorum.

uçlar Bu örnekte olduğu gibi tam olarak aynı sözdizimini kullanmadıkça Ayrıca, bağlantı çağrıları (eksi şifreler) bir kopyasını gönderebilir.

Cevap 05/08/2008 saat 22:52
kaynak kullanıcı

oy
1

Tek yapmanız hepsi var mı:

flush privileges;

kullanıcı kurmak değilse o zaman 'apache' verecek @ hatası 'localhost'.

Cevap 19/09/2013 saat 11:46
kaynak kullanıcı

oy
1

Aşağıdakilerden birini yapabilirsiniz:

  • bir kabuk üzerinde kullanıcı "apache" ve kurulumu phpmyadmin onun ayrıcalık veya kullanarak mysql ekle
  • Çalıştırmak için php söyle mysql_connectbaşka bir kullanıcı olarak, zaten ayrıcalıkları gerekli (ama belki de değil kök), php.ini dosyasındaki mysql.default_user aramak olan birini.
Cevap 21/06/2009 saat 22:06
kaynak kullanıcı

oy
1

Eğer bir hata alıyorum sadece bu kısmını kullanırsanız Sadece kontrol etmek?

Eğer öyleyse, hala kopyalamak eğer bir hata alıyorum ve bunun içine bu Ek'lerin birini> sayfasını, ben sayfaya veya o fiili hattına lokal olup olmadığını görmek için çalışıyorum yapıştırırım.

Ayrıca, ekler sürece> Bu örnekte olduğu gibi tam olarak aynı sözdizimini kullanın, bağlantı çağrıları (eksi şifreler) bir kopyasını gönderebilir.

İşte connection.php dosyasında budur. Ben bir I INSERT başka yerde kodunda sorguları IGNORE yürütmek nereye aynı şekilde dahil yoluyla dosyaya bağladı.

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

Çalıştığım INSERT bir kontrol etmek, bu alanda sorguyu YOKSAY çalışacağız.

şifre erişimi hakkında gönderme başkalarına gibi. İlk gönderme belirtildiği gibi, yaptığımız, izinlerini kontrol edin. Ben kullanıyordum kullanıcı hesabı için izinleri doğru olduğunu doğrulamak için phpMyAdmin kullandı. hepsi de önemli eğer, apache @ localhost ben veritabanına almak için kullandığınız kullanıcı hesabının adı değildir. Ben bu konuda zaman zaman bunların apache adıyla Herhangi bir kullanıcı hesabı yoktur.

Cevap 05/08/2008 saat 23:40
kaynak kullanıcı

oy
1

Aynı bağlantı çağrıları kullanarak eklemek edebiliyoruz gerçekten varsa, sorun büyük olasılıkla veritabanı üzerinde SEÇ izinlere sahip olmayan kullanıcı "apache" yatıyor. Eğer varsa phpMyAdmin Ayrıcalıklar bölmesinde kullanıcı için izinleri bakabilirsiniz yüklü. phpMyAdmin'in da çok kolay izinlerini değiştirmek mümkün kılar.

Yalnızca komut satırına erişim varsa, MySQL veritabanından izinlerini kontrol edebilirsiniz.

Muhtemelen böyle bir şey yapmak gerekir:

GRANT SELECT ON myDatabase.myTable için 'apache' @ 'localhost';

Cevap 05/08/2008 saat 23:02
kaynak kullanıcı

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