Utilisateur de la base de données MySQL: Quels sont les privilèges nécessaires?

48

La courte instruction d'installation de WordPress ( "5 minutes" ) indique que:

  

Créez une base de données pour WordPress sur votre serveur Web, ainsi qu’un utilisateur MySQL disposant de tous les privilèges lui permettant d’y accéder et de le modifier.

Lors de la création professionnelle d'un nouveau blog, je me demandais comment cela correspond à ce que la configuration des privilèges / autorisations des utilisateurs de la base de données MySQL m'offre:

  • Données: SELECT , INSERT , UPDATE , DELETE
  • Définition: CREATE , ALTER , DROP
  • Extra: INDEX
  • Plus:
    1. LOCK TABLES
    2. REFERENCES
    3. CREATE TEMPORARY TABLES
    4. CREATE VIEW
    5. SHOW VIEW
    6. CREATE ROUTINE
    7. EXECUTE
    8. ALTER ROUTINE

Je suis presque certain que pour les trois premiers groupes, je les ai nommés Data, Definition et Extra ici. Mais qu'en est-il des autres utilisateurs situés sous l'entrée Plus ? Normalement, je dirais que ce n'est pas nécessaire, mais j'aimerais avoir un deuxième avis.

    
posée hakre 06.01.2011 - 13:53
la source

5 réponses

12

Les autres ne sont pas nécessaires, comme vous le signalez.

Btw, ce que vous pouvez faire est de définir conditionnellement l’utilisateur / le mot de passe en fonction de la page demandée. Comme dans les catégories non privilégiées avec select / insert / update / delete pour une utilisation normale et privilégiées avec les éléments liés à la définition / index en plus lors de la visite de la page de mise à niveau.

    
réponse donnée Denis de Bernardy 06.01.2011 - 17:09
la source
31

"Tous les privilèges" signifie généralement que vous devez tout attribuer à l'utilisateur. Cependant ...

J'ai trouvé au moins un article faisant état de MySQL. l'utilisateur n'a besoin que de:

  • SELECT
  • INSÉRER
  • UPDATE

De creuser plus profondément , j'ai constaté que pour fonctionner pleinement (mises à jour automatisées, plug-in / désinstallation, etc.), WordPress nécessite des autorisations supplémentaires:

  • SUPPRIMER
  • ALTER (pour les mises à jour)
  • CREATE TABLE
  • DROP TABLE

Aussi, non référencé mais cela a du sens:

  • INDEX

Mais ce sont les deux seules références solides que je puisse trouver qui soient étayées par des opinions postées ailleurs. Je vous encourage quand même à vous en tenir à GRANT ALL, mais si vous devez absolument limiter votre utilisation de base de données, commencez par ces 7 privilèges et testez pleinement pour vous assurer que tout fonctionne correctement. attendu.

    
réponse donnée EAMann 06.01.2011 - 16:17
la source
12

Voici ce que le Codex a à dire sur la restriction des privilèges des utilisateurs de bases de données:

  

Pour les opérations WordPress normales, telles que la publication de blogs, le téléchargement de fichiers multimédias, la publication de commentaires, la création de nouveaux utilisateurs WordPress et l'installation de plug-ins WordPress, l'utilisateur de la base de données MySQL n'a besoin que des privilèges de lecture et d'écriture des données sur la base de données MySQL; SELECT, INSERT, UPDATE et DELETE.

     

Par conséquent, toute autre structure, ainsi que tous les privilèges d’administration, tels que DROP, ALTER et GRANT, peuvent être révoqués. En révoquant ces privilèges, vous améliorez également les règles de confinement.

     

Remarque: certains plug-ins, thèmes et mises à jour majeures de WordPress peuvent nécessiter des modifications structurelles de la base de données, telles que l'ajout de nouvelles tables ou la modification du schéma. Dans ce cas, avant d'installer le plug-in ou de mettre à jour un logiciel, accordez temporairement à l'utilisateur de la base de données les privilèges requis.

enlace

    
réponse donnée redburn 12.01.2014 - 18:09
la source
2

En ce qui concerne la "note" dans l'article de redburn, le codpress Wordpress contient également un avertissement à lire également concernant les mises à jour et les modifications du schéma de la base de données ...

(Edit: je remarque cependant que JE NE VOIS PAS "GRANT" dans la liste des privilèges lors de la création ou de la mise à jour d'un utilisateur Peut-être que "CRÉER" devrait être ajouté à la liste? Quelqu'un at-il des informations à ce sujet? - à l'aide de Hostgator cPanel, mars 2016 -)

  

AVERTISSEMENT:
  Tenter des mises à jour sans disposer de ces privilèges [ Les commandes SELECT, INSERT, UPDATE, DELETE, DROP, ALTER et GRANT ] peut entraîner   des problèmes lorsque des modifications de schéma de base de données se produisent. Ainsi, ce n'est pas   recommandé de révoquer ces privilèges. Si vous ressentez le besoin de le faire   ceci pour des raisons de sécurité, alors s'il vous plaît assurez-vous que vous avez un solide   plan de sauvegarde en place d’abord, avec des sauvegardes régulières de la base de données complète   vous avez testé sont valides et peuvent être facilement restaurés. A échoué   la mise à niveau de la base de données peut généralement être résolue en restaurant la base de données   à une ancienne version, en accordant les autorisations appropriées, puis en laissant   WordPress essayez à nouveau la mise à jour de la base de données. La restauration de la base de données   renvoyez-le à cette ancienne version et à l'administration WordPress   l’écran détectera alors l’ancienne version et vous permettra d’exécuter le   commandes SQL nécessaires dessus. La plupart des mises à jour WordPress ne changent pas   le schéma, mais certains le font. Seules les améliorations majeures (3.7 à 3.8, pour   exemple) modifiera le schéma. Des mises à niveau mineures (3.8 à 3.8.1)   généralement pas. Néanmoins, conservez une sauvegarde régulière.

Codex: enlace

    
réponse donnée Jerry9 30.03.2016 - 08:59
la source
0

Mon opinion est la même que celle de @EAMann ci-dessus, ainsi que des sources auxquelles il a fait référence: GRANT ALL est nécessaire pour garantir la fonctionnalité et la pérennité de votre site. Même sur un site de production, essayez de vous en tenir au manuel d'utilisation.

En tant que contributeur de code pour le noyau WordPress et quelques plug-ins, je vous recommande de conserver les privilèges de base de données par défaut, comme indiqué dans le manuel d'utilisation (DONNER TOUT PRIVILÈGES À wpdatabasename. * TO "wordpressusername" @ "hostname").

Le code source de WordPress (présent et futur) suppose que l'utilisateur de base de données WordPress dispose de tous les privilèges de base de données pour la base de données WordPress donnée. Si votre configuration manque de privilèges de base de données, vous pouvez rencontrer des problèmes lors de la mise à niveau de WordPress et de l'ajout de plug-ins.

Donc, vous ne devriez vraiment pas utiliser des privilèges de base de données différents des privilèges de base de données recommandés par défaut dans le manuel, à moins que vous ne sachiez ce que vous faites, avez des besoins très spécifiques et n'oubliez pas vos privilèges de base de données personnalisés.

La page du Codex a depuis été mise à jour et explique comment faire cela à l'aide d'exemples sur divers systèmes et de captures d'écran. enlace

Création d’un nom de base de données et d’un utilisateur (via PHPMyAdmin): enlace

Création d'un nom de base de données et d'un utilisateur (via le client en ligne de commande MySQL): enlace

mysql> CREATE DATABASE wpdatabasename;
Query OK, 1 row affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON wpdatabasename.* TO "wordpressusername"@"hostname"
    -> IDENTIFIED BY "password";
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql> EXIT
    
réponse donnée Steven Lin 08.10.2018 - 17:42
la source

Lire d'autres questions sur les étiquettes