web-dev-qa-db-fra.com

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

La courte instruction d’installation pour 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 assez sûr pour les trois premiers groupes, je les ai nommés Data, Definition et Extra ici. Mais qu'en est-il des autres en dessous de l'entrée Plus ? Normalement, je dirais que ce n'est pas nécessaire, mais j'aimerais avoir un deuxième avis.

51
hakre

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

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

13
Denis de Bernardy

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

J'ai trouvé au moins un article qui déclare que l'utilisateur de MySQL n'a besoin que de:

  • SÉLECTIONNER
  • INSÉRER
  • METTRE À JOUR

Pour aller plus loin , j'ai constaté que pour fonctionner pleinement (mises à jour automatisées, installation/désinstallation de plug-ins, etc.), WordPress nécessite des autorisations supplémentaires:

  • EFFACER
  • ALTER (pour les mises à jour)
  • CREER LA TABLE
  • DROP TABLE

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

  • INDICE

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 limiter votre utilisation de base de données, commencez avec ces 7 privilèges et test entièrement pour vous assurer que tout fonctionne comme prévu.

33
EAMann

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 billets de blog, le téléchargement de fichiers multimédias, la publication de commentaires, la création de nouveaux utilisateurs WordPress et l'installation de plugins 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 pour la base de données MySQL; SELECT, INSERT, UPDATE et DELETE.

Par conséquent, toute autre structure, ainsi que 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 politiques de confinement.

Remarque: certains plugins, 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.

http://codex.wordpress.org/Hardening_WordPress

12
redburn

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"CREATE"devrait être ajouté à la liste? Quelqu'un a-t-il des informations à ce sujet? - à l'aide de Hostgator cPanel, mars 2016 -)

ATTENTION:
Tenter des mises à jour sans disposer de ces privilèges [ SELECT, INSERT, UPDATE, DELETE, DROP, ALTER et GRANT ] peut entraîner des problèmes lors de la modification du schéma de base de données. Ainsi, il n'est PAS recommandé de révoquer ces privilèges. Si vous sentez le besoin de le faire pour des raisons de sécurité, assurez-vous d’abord de disposer d’un plan de sauvegarde solide. Les sauvegardes régulières de la base de données que vous avez testées sont valides et peuvent être facilement restaurées. Une mise à niveau de la base de données ayant échoué 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 tenter à nouveau de mettre à jour la base de données. La restauration de la base de données la ramènera à cette ancienne version. Les écrans d’administration de WordPress détecteront alors l’ancienne version et vous permettront d’exécuter les commandes SQL nécessaires. La plupart des mises à niveau de WordPress ne modifient pas le schéma, mais certaines le font. Seules les mises à niveau majeures (3.7 à 3.8, par exemple) modifieront le schéma. Les mises à niveau mineures (3.8 à 3.8.1) ne le seront généralement pas. Néanmoins, gardez une sauvegarde régulière.

Codex: http://codex.wordpress.org/Hardening_WordPress

2
Jerry9

Mon opinion est identique à 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, vous devrez vous en tenir au manuel d'utilisation.

En tant que contributeur au code de 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 SUR wpdatabasename. * TO "wordpressusername" @ "hostname").

Le code source WordPress (actuel 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.

Vous ne devriez donc 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 avec des exemples sur divers systèmes et des captures d'écran. https://codex.wordpress.org/Installing_WordPress#Step_2:_Create_the_Database_and_a_User

Créer un nom et un utilisateur de base de données (via PHPMyAdmin): https://codex.wordpress.org/Installing_WordPress#Using_phpMyAdmin

Création d’un nom de base de données et d’un utilisateur (via le client de ligne de commande MySQL): https://codex.wordpress.org/Installing_WordPress#Using_the_MySQL_Client

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
0
Steven Lin