2010-07-11 11 views
4

Nous construisons une application multi-utilisateur qui a une base de données par client. Toutes les structures de base de données client sont identiques. Actuellement, nous générons un nouvel utilisateur mysql (par client) qui n'a que des privilèges pour travailler sur sa propre base de données.Utiliser des utilisateurs mysql simples ou multiples pour une application SaaS PHP/mysql avec une architecture multi-locataires

par exemple. mysql user1 a des droits sur dbase1. * (database1.alltables), mysql user2 a des droits sur dbase2. *. Nous constatons maintenant qu'il est déjà difficile de se faire décharger sur un autre serveur en tant que sauvegarde (nous n'utilisons pas la réplication mais nous essayons de vider les fichiers de temps à autre mais la base de données information_schema ne peut pas être supprimée.) &

Quoi qu'il en soit, nous nous demandons s'il ne vaudrait pas mieux utiliser 1 utilisateur qui peut accéder à toutes les bases de données client, c'est plus dangereux ou peut-il être utilisé de manière plutôt sécurisée? mieux gérer à coup sûr

Répondre

2

Quelle est votre opinion? Au moment de la création pour l'utilisateur MySQL, vous pouvez également stocker un enregistrement de la création de cet utilisateur ailleurs (en dehors de la base de données), puis avoir un script pour restaurer les utilisateurs et leurs permissions dans la base de données. enregistrer vous avez créé.

+0

merci, c'est un bon conseil, mais nous aurions encore à gérer tous ces comptes d'utilisateurs. Existe-t-il un moyen de le faire avec un seul compte et de garder les choses en sécurité? – Jorre

+1

Eh bien, l'avantage de plusieurs comptes d'utilisateurs est que cela vous donne une autre couche d'isolation - si pour une raison quelconque, une injection SQL est effectuée, tout ce qu'elle peut toucher, ce sont les données d'un seul client. En dehors de cela, vous pourriez théoriquement écrire votre propre couche d'encapsulation pour la base de données qui imposerait l'accès à la base de données du client actuel, ce qui vous donnerait des avantages similaires; vous faites juste confiance à votre codage au lieu de celui de l'équipe MySQL. – Amber