php ile mysql bağlanamıyor

7 Cevap php

Ben phpmyadmin ile cezası bağlanabilir olsa bile ben, bir php script ile mysql bağlanmak için görünmüyor olabilir. Ben bir şifre ile bir kullanıcı oluşturduk ve bunu db için uygun yetkiye verdi, ama her şey o erişim engellendi söyleyerek ölür bağlar. Ben bir windows xp kutusu xampp kullanıyorum. Güvenlik duvarları, tüm engelli ve ben adı nad parola doğru kontrol ettik. İşte kod:

$conn=mysql_connect('localhost','westbrookc16','megadots') || die (mysql_error());

Adlarını belirli bir biçimde ya da bir şey olmak zorunda mı?

7 Cevap

Burada sorun, gerçekten eğitimli bir tahmin daha fazla değil olsa, onu verilen konak olduğunu bir his var. Eğer erişim myuser @ '127 .0.0.1 'veya sunucuları gerçek ip adresi verirseniz, ev sahibi olarak localhost kullanarak bağlanmak için izin verilmez. Bu "localhost" host olarak belirtildiğinde, php yerine ağ soketi unix soket kullanmak istediğinizi varsayalım ve bu bağlam 127.0.0.1 localhost olarak aynı değildir olacağı gerçeğinden kaynaklanmaktadır.

Için manuel giriş itibaren mysql_connect():

Note: Whenever you specify "localhost" or "localhost:port" as server, the MySQL client library will override this and try to connect to a local socket (named pipe on Windows). If you want to use TCP/IP, use "127.0.0.1" instead of "localhost". If the MySQL client library tries to connect to the wrong local socket, you should set the correct path as Runtime Configuration in your PHP configuration and leave the server field blank.

Bu tamamen gereksiz değildir umarım. :)

Ben bir mysql kullanıcı php aracılığıyla günlükleri ve başka olmadığı yerlerde, daha önce görmüştüm. Bazen kullanıcı bile komut ile değil php çalışır.

Her zaman Emil iki ne reffering edilir oldu. Bir mysql kullanıcı gerçekten kullanıcı / host çifti. yani localhost @ kullanıcı megadots ve mycoolhost @ kullanıcı megadots iki ayrı kayıtlar olarak mysql.user tabloda listelenmiştir.

Eğer komut satırından giriş yapabilirsiniz Eğer bu sorguyu çalıştırın.

SELECT user, host FROM mysql.user

kullanıcılar ve onların ana tam listesini görmelisiniz.

Eğer çalışan phpMyAdmin kullanıcıyı tanıması halinde, muhtemelen kullanmak istediğiniz host konak sütununda bakmak.

konak bu sorguları çalıştırmak sıfırlamak için (! tüm mysql kurulumu için ayrıcalıklar tablo ile bu çalışmayı yaparken dikkatli olun)

update mysql.user set host = 'hostname' 
where user = 'username' and host = 'oldhostname';

flush privileges;

Eğer her şeyin üzerinde önceliğe sahip olacaktır ev sahibi olarak kullanıcı adı ve% ile bir kayıt görürseniz bunlardan biri için ev sahibi olarak kullanıcı ve% için birden fazla kayıt varsa, o ev sahibi olarak% ile adı bulunması mümkün Bu oturum açma kullanıcı adı @% kıyasla olacak çünkü yanlış parola ve kullanıcı adı @ localhost'a parolasını sıfırlamak nasıl manytimes olursa olsun geçersiz bulunuyor.

Eğer Linux kullanıyorsanız bulmak ve PHP ve MySQL böylece bağlayabilirsiniz hem ihtiyacınız olan tüm kütüphaneleri ve mods indirmek için synaptic paket yöneticisini kullanın. Benim sorun tek başına çalışan PHP betikleri sunucu tarafında çalıştı ama ben bağlamak olmaz MySQL bağlanmak için PHP komut dosyalarını kullanarak çalıştım ben sadece düz beyaz bir sayfa göreceksiniz. Sonra ben PHP MySQL conect için kullandığı MySQL istemci kütüphaneleri yoktu fark ettim. Ben sadece MySQL sunucu kütüphaneleri vardı. Ben istemci tarafı kütüphaneleri yüklü ve apache sunucusunu bir kez yeniden benim PHP betikleri bağlayan hiçbir sorun yoktu. Varsayılan olarak PHP 5 MySQL istemci tarafı kütüphaneleri ile yüklü gelmiyor.

Benim durumumda, ben ben kullanıyordum veritabanı oluşturmak için kullanılan kullanıcı silinmiş olduğunu döndü. Normalde bu 'kullanıcı belirtilen definer yok' hata vermelidir, ama nedense sadece benim PHP kodu engellendi daha genel erişimi dönüyordu. Ben hala komut satırı ve diğer arayüzleri aracılığıyla giriş olabilir neden emin değilim. Benim sorunu gidermek için ben silindi kullanıcıyı yeniden.

Bu ya bir yazım hatası olacak ya da ayrıcalıkları verilmiş değil. Bazen bu noktaya korkutucu zor olabilir.

Ben phpmyadmin kullanabilirsiniz ama SQLYOG (ücretsiz topluluk versiyonu, büyük) bir kopyasını indirmek ve üzerinden kullanıcı ile giriş kalkmayın öneririz. Eğer sorun tanısı aldıktan sonra orada kopyalama / geri komut kullanıcı adı / şifre yapıştırın.

Bu arada phpmyadmin ince, ama böyle SQLyog gibi bir program daha uygundur, bu yüzden zaten kontrol dışarı değer - Ben dönüştürülecek eminim. Sqlyog zevkinize oldukça değilse diğer birçok ücretsiz ve ticari alternatifler vardır.

ve o db için uygun yetkiye verdi

How? What host did you use for the user when granting it?

Bu normalde nasıl yapılır:

GRANT ALL ON mydb.* TO 'someuser'@'somehost' identified by 'password';
FLUSH privileges;

senin durumunda 'somehost' muhtemelen 'localhost' veya '127 .0.0.1 'olmalıdır (diğer yazı bakın)

Sözdizimi Referans: http://dev.mysql.com/doc/refman/5.1/en/grant.html

Benzer bir sorun yaşıyorsanız sonra ben localhost 'ile' '127 .0.0.1 yerine '(localhost' hile mi ben mümkün olduğu gerçeğine rağmen başarıyla kullanarak terminal üzerinden bağlamak için ') bulundu.