2010-10-05 10 views
15

Comment puis-je faire une seule table dans mysql en lecture seule pour un utilisateur alors qu'il a encore un accès en écriture à d'autres tables dans la même base de données?Créer une seule table dans mysql en lecture seule

Informations complémentaires

  • J'ai accès root au serveur
  • Les tables sont MyISAM
  • Server version est 5.0.51a-24 + lenny2

merci!

Répondre

6

supprimer tous les droits précédents et accorder les nouveaux privilèges spécifiques:

REVOKE ALL ON db.table FROM user; 
REVOKE ALL ON db.othertable FROM user; 
GRANT SELECT ON db.table TO user; 
GRANT SELECT, INSERT, UPDATE, DELETE ON db.othertable TO user; 
+3

Si cet utilisateur a déjà « ALL PRIVILEGES » sur ce tableau que je devrais révoquer ceux-ci et attribuer des privilèges de table individuels sur chaque table ou puis-je remplacer les privilèges sur la seule table avec SELECT seulement? – ChrisR

+1

@chris question valide. néanmoins, simplement essayer cela vous-même devrait être une question de secondes;) – sfussenegger

+3

vrai mais je ne suis pas vraiment désireux d'essayer ceci sur la base de données en direct et la mise en place d'une base de données avec les mêmes données n'est pas une question de secondes :) Testez-le, voyons à quelle vitesse je peux obtenir un miroir local de la base de données en direct :) – ChrisR

3

Vous pouvez faire une seule table MyISAM lecture seule par compression de la table. Utilisez myisampack sur la ligne de commande pour emballer la table.

Plus d'informations peuvent être trouvées dans le manuel MySQL: http://dev.mysql.com/doc/refman/5.0/en/myisampack.html