Mysql
 sql >> Base de données >  >> RDS >> Mysql

L'autorisation de mise à jour MYSQL doit également sélectionner l'autorisation ?

C'est possible, mais votre problème est que votre UPDATE-Query contient une clause WHERE qui doit interroger les champs au moins en interne. Il est donc prévu que vous ayez besoin de l'autorisation SELECT ici.

Sinon, on pourrait essayer d'utiliser des techniques de force brute pour obtenir le contenu réel de la table en utilisant une requête UPDATE et en vérifiant si elle a affecté des lignes.

Exemple :UPDATE clients SET some_irrellevant_field=1 WHERE user ='jimmy' AND sexual_orientation ='2'Dès que vous avez un nombre de lignes affectées> 0, vous auriez l'information. Il serait donc peut-être trop dangereux de permettre cela.

Mais vous pouvez explicitement donner des autorisations pour des colonnes uniques. Supposons que vous souhaitiez mettre à jour le hachage du mot de passe d'un utilisateur avec un certain identifiant, vous accordez l'autorisation de sélection sur la colonne d'identifiant à l'utilisateur de la base de données et mettez à jour l'autorisation sur la colonne de hachage.

Boîte de dialogue d'autorisation spécifique à la table PHPMyAdmin (désolé, certaines parties des captures d'écran sont en allemand) :

Alors cela devrait fonctionner correctement :UPDATE users SET hash='0123456789abcdef' WHERE id =1234

Alternativement, si l'autorisation au niveau des colonnes ne doit pas être disponible dans votre SGBD ou votre moteur de stockage, vous pouvez toujours utiliser une table ou une base de données distincte et la joindre lorsque cela est nécessaire.