php mysql bağlantısı karışıklık

3 Cevap php

daha önceki çalışmalarında dolaşan biraz karışıklık vardı. Id Herkes gidiyor wats bilir görmek için yous tarafından çalıştırın düşündüm.

Başlatmak için yaklaşık bir iç yönetim müşterimiz için sistemi, ve ayin üzerinde çalışıyorlardı. Onun server [Db_1 ve Db_2] ve PHP ön ucunda İKİ MySQL veritabanlarının oluşmaktadır. [Hem veritabanlarının birkaç tabloları içeren].

Bizim veritabanlarına bir bağlantı gerektirir ve bu bağlantıların TÜM açıkça [Db_1] Yukarıda belirtilen ilk veritabanına bağlanan ve giriş ve şifre malzemeleri tek bir PHP fonksiyonu ile yapılır bazıları 90 farklı PHP dosyaları, belki vardır. Ve bu gayet iyi çalışıyor.

However, our second database, db_2, does not seem to require its own login and password to access its contents.
As soon as we connect to db_1, we seem to have full access to db_2, as long as we use the Full-Name for our tables [ie: db_2.usersTable] -> ("SELECT * FROM db_2.usersTable WHERE...").

Ve bu çok karışıklığa neden buydu.

Benim soru şudur: Eğer bir sunucuda bir veritabanına bağlanmak sonra, o sunucu üzerindeki diğer veri tabanlarına erişim var, ya da biz bir şey bakan
??

Herhangi bir geribildirim büyük bayanlar takdir ...

3 Cevap

Genellikle belirli bir veritabanında bir veritabanı sunucusuna erişmek, ancak bir veya daha fazla veritabanı erişimi olan bir kullanıcı tarafından yok.

örneğin:

mysql_connect("localhost", "user", "password") or die(mysql_error());

sunucusu ve belirli bir veritabanına bağlanır.

Bir kez o kullanıcının iznine sahip olduğu için tüm veritabanlarına erişim veritabanı sunucusuna bağlı. Sadece varsayılan olmayan birden çok veritabanları varsa, sorgularda veritabanı adını belirtmeniz gerekir.

mysql_select_db("myTable") or die(mysql_error());

Varsayılan olarak Tablom setleri, ama hala kullanıcı iznine sahip olduğu diğer tablolar erişebilirsiniz.

Ben yanlış olabilir, ama sadece PHP bağlamak ve bir kullanıcı ile MySQL server ile kimliğini değil? Ve böylece, o kullanıcının izinlerine dayanarak, PHP kullanıcı erişimi olan herhangi bir veritabanını seçebilirsiniz. Ben ile bağlantı kullanıcı için izinleri kontrol ediyorum ...

Once you connect to a database on a server, do you have access to other databases on that server

Eğer diğer veritabanları için izniniz varsa, o zaman evet. Eğer bağladığınızda, sunucuya bağlanan ve belirli birine default veritabanını belirliyoruz. Hangi bunu erişmek istediğiniz zaman açıkça Db_2 belirtmek zorunda, ama Db_1 belirtmek zorunda değilsiniz nedeni budur.