Nasıl php MySQL bağlanmak mı?

8 Cevap php

I'm working through examples from a book on php/mysql development. I'm working on a linux/apache environment.

Ben bir veritabanı ve kullanıcı kurdum. Ben bu kod satırı ile bağlanmaya çalışırsanız:

$db_server = mysql_connect($db_hostname, $db_username, $db_password);

Ben bu hatayı alıyorum:

Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'www-data'@'localhost' (using password: YES) in /var/www/hosts/dj/connect.php on line 3 unable to connect to database: Access denied for user 'www-data'@'localhost' (using password: YES)

I can only guess what is happening here: I think www-data is a username for apache. Upon the database connection, the credentials being passed in to mysql are not those of my database user, but rather apache's own credentials. Is that what is happening here?

Nasıl benim kullanıcı için tanımladığınız kimlik geçmek mi?

edit: By the way - I do have credentials in the variables $db_hostname, $db_username, $db_password.

Onlar require_oncenin kullanılarak başka bir dosya ile geçirilir. Bu dosya bulunamazsa, o zaman ben bir hata alıyorum. Yani, benim kullanıcı adı ve şifre benim komut dosyası tarafından kullanılıyor olduğunu biliyoruz.

Both my scripts can be seen here: http://pastebin.com/MUneLEib

#

Çözüldü:

Teşekkürler çocuklar.

Size bir çift ben carelessy kodlu işaret etti.

Ayrıca, özellikle Neo cevap ile memnun etti: apache sürecinin sahibinin adı kullanılan neden bana söyledi.

:)

8 Cevap

I just looked at your code! The variable with the username is $database_username but you are using $db_username.. Change your code to:

$db_server = mysql_connect($db_hostname, $database_username, $db_password);

or you could change the line with username with: $db_username='[your mysql user]';//or the username you created

Eğer hiçbir şey geçemiyor zaman kullanıcı mysql varsayar olacak ama db_password $ tanımlı olmasaydı eğer söyleyebilirim yüzden şifreyi almazsınız: (şifre kullanarak: NO)

hiçbir şey mysql kullanıcı için şifre ile geçirilen zaman size müşteri $ database_username set ama ayarlı değil $ db_username geçiyoruz böylece kullanıcı varsayılan olarak linux kullanıcı adı! Bu şifre veya ayrıcalıklarıyla hatta bu isimde bir mysql kullanıcı beri erişime verilmez!

Bu kullanıcı istemci tarafı istekleri atanmış bir apache kullanıcı tahmin gibidir www-veri!

Sizin login.php Eğer $database_username değişkeni kullanın, ancak bağlantı işlevi kullanmak $db_username. Onları eşleştirerek sahipsiniz.

Adı $db_username gider ve şifre $db_password gider.

Eğer $ db_username veritabanı kullanıcı adı ve şifre ile aynı anlama gelir bilmiyorum sanki tüm bu diğer cevaplar, öylesine küstahça vardır.

Hata, bir kullanıcı adı ve parola belirtilen ettik diyor. Sadece yanlış olanları belirtildi. Sen öylesine hayır, bu www-data olmayacak, MySQL kullanıcı adı ve şifre DEĞİL, sistem kullanıcı adı / şifre kombinasyonu kullanmanız gerekir. Bu kök ve bazı şifre olabilir, ama yine, bu kimlik MySQL içinde belirtilen ve değil (zorunlu) olan sistem kullanıcıları ve şifreleri gibi aynı edilmektedir.

Sizin MySQL kurulum varsayılan bir parola (derhal değiştirmeniz gereken) bir kök kullanıcı olmalıdır. Birkaç seçenek vardır: yapabilirsiniz add an user via the MySQL command line veya sağlayıcı böyle bir şey varsa cPanel veya Webmin gibi bir arabirim kullanmak; Ben bu iki kullandım ve her ikisi de yeni MySQL kullanıcıları ekleyebilir ve ayrıcalıkları atamak kolay arayüzlere sahip.

Ayrıca sadece bir ipucu: Ben genellikle veritabanı başına bir kullanıcı oluşturmak ve veritabanı üzerinde kullanıcı tam ayrıcalıkları vermek, ve daha sonra veritabanına bağlı uygulama ile onu kullanın.

Bir MySQL kullanıcı hesabı oluşturmak ve web app veritabanına o ayrıcalıkları vermek kez ve sonra tabii ki, sizin komut içine kullanıcı adı ve şifre girin.

Eğer bağlanmayı denemeden önce aslında bu değişkenler için veritabanı oturum açma kullanıcı adı ve şifre atamak emin olun. Örneğin, mysql_connect ile hattına önce ():

$db_username = 'myuser';
$db_password = 'mypass123';

Ben size daha fazla gitmeye çalışırken önce MySQL ve PHP ile ilgili bir öğretici geçmesi tavsiye ederim - sadece bu yüzden anlamak nasıl tüm eserlerini.

Try this one: http://www.tizag.com/mysqlTutorial/mysqlconnection.php

Also, documentation is your friend: http://php.net/manual/en/function.mysql-connect.php

Verilen hata ayrıcalık verilmiş değil anlamına gelebilir, ya da belki de şifre yanlış. Bu kullanıcı tarafından oluşturulan ve erişim izni olup olmadığını kontrol edin, ya da sadece bu da mysql sunucu üzerinde erişime izin verecek şekilde ayarlandığını emin olmak için sorunu.

$ mysql -u root -p
password:

(Falan filan sunucudan)

GRANT ALL PRIVILEGES ON db_base.* TO 'db username'@'localhost' IDENTIFIED BY 'some password';

Tüm ayrıcalıkları çok fazla ise, yalnızca gerektiğinde temel izinleri veren düşünün:

GRANT SELECT,UPDATE,DELETE ON db_base.* TO 'db username'@'localhost' IDENTIFIED BY 'some password';

Bu arada, başarının bu açıklamaya sunucu yanıttır Query OK, 0 rows affected.

$db_hostname='localhost';
$db_username='root';
$db_password='';
mysql_connect($db_hostname,$db_username,$db_password) or die(mysql_error());

Daha fazla ayrıntı için: mysql connectivity in php