Question

Cela pourrait apparaître comme une question simple, mais j'ai une expérience très limitée avec les bases de données relationnelles. Comment puis-je affiner les autorisations dans MySQL. Par exemple, si j'ai le code suivant

CREATE TABLE IF NOT EXISTS user(
ID INT NOT NULL AUTO_INCREMENT,

//...other columns

PRIMARY KEY(ID)
)ENGINE=InnoDB



CREATE TABLE IF NOT EXISTS pictures
(
ID INT NOT NULL AUTO_INCREMENT,
userID INT NOT NULL,

//...other columns

PRIMARY KEY(ID),
FOREIGN KEY (userID) REFERENCES user(ID)
)ENGINE=InnoDB";

Et je crée deux nouveaux utilisateurs, user1 et user2, Je peux leur donner la permission aux tables en tant que telles

GRANT ALL PRIVILIGES ON db_name.* to ".user1."@\"%\" identified by ".pass1
GRANT ALL PRIVILIGES ON db_name.* to ".user2."@\"%\" identified by ".pass2

Mais y a-t-il un endroit pour restreindre les privilèges à l'intérieur d'un tableau à un sous-ensemble spécifique? Dois-je le réaliser dans mon code PHP à la place? Je suis habitué à l'objet de programmation orientée vers l'objet, donc je ne suis pas habitué à des tables massives qui contiennent toutes les informations.

Était-ce utile?

La solution

Plus précisément, vous ne pouvez pas accorder l'accès à certaines rangées d'une table et pas à d'autres, ce qui ressemble à ce que vous demandez à faire.

Autres conseils

Je recommande de faire votre autorisation pour les utilisateurs finaux de votre application en PHP. L'utilisation des utilisateurs de la base de données pour contrôler l'accès est une méthode désuet (à mon avis) et peut être difficile à faire / prendre en charge dans MySQL / PHP car ce n'est pas communément fait.

Dans le Documentation de l'octroi Vous devrez vérifier les documents pour voir quels privilèges spécifiques vous recherchez; Mais vous devrez effectuer plusieurs subventions pour le même utilisateur pour chaque privilège distinct (c'est-à-dire un pour sélectionner, un pour la mise à jour, etc ...).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top