2009-07-29 4 views
1

eu un peu de confusion dans le travail plus tôt. J'ai pensé que je pourrais voir si quelqu'un connaît les wats.

php mysql connexion confusion

Nous travaillions sur un système d'administration interne pour notre client, et son rite sur le point de se lancer. Il est composé de deux bases de données MySQL sur le serveur [db_1 et db_2] et un frontal PHP. [Les deux bases de données contiennent plusieurs tables]. Il y a peut-être 90 fichiers PHP différents, dont certains nécessitent une connexion à nos bases de données et toutes ces connexions sont faites via une seule fonction PHP qui se connecte explicitement à la première base de données mentionnée ci-dessus [db_1] et fournit le login et mot de passe. Et cela fonctionne bien. Toutefois, notre deuxième base de données, db_2, ne semble pas avoir besoin de son propre identifiant et mot de passe pour accéder à son contenu.
Dès que nous nous connectons à db_1, nous semblons avoir un accès complet à db_2, aussi longtemps que nous utilisons le nom complet pour nos tables [ie: db_2.usersTable] -> ("SELECT * FROM db_2.usersTable WHERE. .. ").

Et c'est ce qui causait beaucoup de confusion. Ma question est la suivante: Une fois que vous vous connectez à une base de données sur un serveur, avez-vous accès à d'autres bases de données sur ce serveur, ou est-ce que nous négligeons quelque chose ???

Tous les commentaires beaucoup de gars ... apprécié

Répondre

4

Vous n'accédez généralement pas un serveur de base de données d'une base de données spécifique, mais par un utilisateur qui a accès à une ou plusieurs bases de données.

par exemple:

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

se connecte au serveur et non une base de données spécifique. Une fois connecté au serveur de base de données, vous avez accès à toutes les bases de données pour lesquelles cet utilisateur a l'autorisation.

Vous avez juste besoin de spécifier le nom de la base de données dans vos requêtes s'il y a plusieurs bases de données qui ne sont pas celles par défaut. Définit myTable comme valeur par défaut, mais vous pouvez toujours accéder à d'autres tables auxquelles l'utilisateur a donné son autorisation.

+1

La connexion est au serveur mysql, plutôt qu'à une base de données spécifique. Merci beaucoup les gars, je pense que je l'ai maintenant! 10/10 –

1

Je peux me tromper, mais PHP ne se connecte-t-il et ne s'authentifie-t-il pas avec le serveur MySQL avec un utilisateur? Et ainsi, en fonction des autorisations de cet utilisateur, PHP peut sélectionner n'importe quelle base de données à laquelle l'utilisateur a accès. Je voudrais vérifier les autorisations pour l'utilisateur que vous connectez avec ...

1

Une fois que vous vous connectez à une base de données sur un serveur , avez-vous accès à d'autres bases de données sur ce serveur

Si vous avez des permissions sur d'autres bases de données, alors oui. Lorsque vous vous connectez, vous vous connectez au serveur et définissez votre base de données par défaut à celle spécifiée.C'est pourquoi vous devez spécifier explicitement db_2 quand vous voulez y accéder, mais vous n'avez pas besoin de spécifier db_1.