Utilisateur de la base de données MySQL: quels privilèges sont nécessaires?
5 réponses
- votes
-
- 2011-01-06
Les autresne sontpasnécessaires comme vous lefaites remarquer.
Btw,ce que vouspouvezfaireest de définir sous condition l'utilisateur/lemot depasseen fonction de lapage demandée.Comme sansprivilège avec select/insert/update/deletepour une utilisationnormale,et privilégié avec des éléments liés à la définition/indexen plus lors de la visite de lapage demise àjour.
The others are not needed as you point out.
Btw, what you could do is, conditionally set the user/pass based on the requested page. As in unprivileged with select/insert/update/delete for normal usage, and privileged with definition/index related stuff in addition when visiting the upgrade page.
-
Y a-t-il des références sur lafaçon de * définir sous condition l'utilisateur/lepassen fonction de lapage demandée * dans unenvironnement WordPress?TAIs there any reference on how to *conditionally set the user/pass based on the requested page* in a WordPress environment? TA
- 1
- 2014-01-24
- superjos
-
@superjos: Pas queje sache de hauten bas,mais l'essentiel serait de définir l'utilisateur debase de donnéesnormal select/insert/update/delete dans wp-configet,lorsque l'URL correspond au/wp-adminpages (probablementmettre àjour,activer lethèmeet activer leplugin),pour définir un autre utilisateur quipeutfairetout le reste.@superjos: Not that I'm aware of off the top of my head, but the gist of it would be to define the normal DB user select/insert/update/delete in wp-config and, when the url matches the relevant /wp-admin pages (likely upgrade, activate theme and activate plugin), to define an alternative user that can do everything else.
- 0
- 2014-01-24
- Denis de Bernardy
-
- 2011-01-06
"Tous lesprivilèges" signifiegénéralement que vous deveztout attribuer à l'utilisateur. Cependant ...
J'aitrouvé aumoins un article qui revendique MySQL l'utilisateurn'abesoin que de:
- SELECT
- INSÉRER
- MISE À JOUR
En creusantplusprofondément ,j'aitrouvé quepourfonctionnerpleinement (mises àjour automatiques,installation/désinstallation duplug-in,etc.),WordPressnécessite des autorisations supplémentaires:
- SUPPRIMER
- ALTER (pour lesmises àjour)
- CRÉER UNE TABLE
- DROP TABLE
Deplus,non référencémais c'est logique:
- INDEX
Mais ce sont les deux seules références solides queje peuxtrouver qui sont soutenuespar des opinionspubliées ailleurs. Je vousencouragetoujours à vousen tenir à GRANT ALL,mais si vous devez absolument limiter votre utilisation de labase de données,commencez avec ces 7privilègeset testez complètement pour vous assurer quetoutfonctionne commeprévu.
"All privileges" usually means you should grand everything to the user. However ...
I've found at least one article that claims the MySQL user only needs:
- SELECT
- INSERT
- UPDATE
Digging deeper, I found that in order to operate fully (automated updates, plug-in installation/uninstallation, etc.), WordPress requires some additional permissions:
- DELETE
- ALTER (for updates)
- CREATE TABLE
- DROP TABLE
Also, not referenced but it makes sense:
- INDEX
But those are the only two solid references I can find that are backed up by opinions posted elsewhere. I'd still encourage you to stick with GRANT ALL, but if you absolutely must limit your DB use, start with these 7 privileges and test fully to make sure things work as expected.
-
Merci d'avoirpartagé vos avis.Pour ce siteinstallé,je n'aipas GRANT ALL car cen'estpas un site de développementet jem'entiensplutôt àtoutincl.INDICE.Ça a l'airbien jusqu'àprésent,je pense queje legarde suivi au cours desprochainsjours,c'est un site réelincl.beaucoup d'utilisation depluginet autres.Pour INDEX,je pourrais aussi chercher unpeu lenoyauet lemanuelmysql.Thanks for sharing your thoughts. For that site installed I did not GRANT ALL as this is not a development site and instead stick to all incl. INDEX. Looks good so far, I think I keep it tracked over the next days, it's a real life site incl. a lot of plugin use and the like. For INDEX I might search core and the mysql manual a bit as well.
- 0
- 2011-01-06
- hakre
-
N'oubliezpas que lesplug-instierspeuvent appeler àpeuprèsn'importe quelleinstruction SQL de leur choix ... alors assurez-vous de les vérifier correctement avant d'installer des éléments qui dépendent desprivilèges que vous avez révoqués.Just remember that 3rd party plug-ins can call just about any SQL statement they want ... so make sure you properly vet them before installing things dependent on privileges you've revoked.
- 1
- 2011-01-06
- EAMann
-
- 2014-01-12
Voici ce que le Codex a à dire sur la restriction desprivilèges des utilisateurs debases de données:
Pour les opérations WordPressnormales,telles que lapublication d'articles deblog,letéléchargement defichiersmultimédias,lapublication de commentaires,la création denouveaux utilisateurs WordPresset l'installation deplugins WordPress,l'utilisateur de labase de données MySQLn'abesoin que desprivilèges de lecture de donnéeset d'écriture de données dans labase de données MySQL; SELECT,INSERT,UPDATEet DELETE.
Par conséquent,toute autre structure debase de donnéeset privilèges d'administration,tels que DROP,ALTERet GRANT,peuvent être révoqués. En révoquant cesprivilèges,vous améliorez également lespolitiques de confinement.
Remarque: certainsplugins,thèmeset mises àjourmajeures de WordPresspeuventnécessiter desmodifications structurelles de labase de données,telles que l'ajout denouvellestables ou lamodification du schéma. Dans ce cas,avant d'installer leplugin ou demettre àjour un logiciel,accordeztemporairement à l'utilisateur de labase de données lesprivilèges requis.
Here's what Codex has to say on restricting database user privileges:
For normal WordPress operations, such as posting blog posts, uploading media files, posting comments, creating new WordPress users and installing WordPress plugins, the MySQL database user only needs data read and data write privileges to the MySQL database; SELECT, INSERT, UPDATE and DELETE.
Therefore any other database structure and administration privileges, such as DROP, ALTER and GRANT can be revoked. By revoking such privileges you are also improving the containment policies.
Note: Some plugins, themes and major WordPress updates might require to make database structural changes, such as add new tables or change the schema. In such case, before installing the plugin or updating a software temporarily allow the database user the required privileges.
-
J'essaie demettreen pratique leprincipe dumoindreprivilège lorsque celaestpossible.Lesinformations (utiles) citéesne figurentplus dans l'article du Codex lié,merci de les copierici.I try to practice the principle of Least Privilege when ever possible. The (useful) quoted information is no longer in the linked Codex article so thanks for copying it here.
- 2
- 2017-03-02
- Anthony Geoghegan
-
- 2016-03-30
En ce qui concerne la "Note" dans lepost de redburn,le Codex Wordpress a également un avertissement que vous devriez également lire sur lesmises àjouret les changements de schéma debase de données ...
(Modifier:je remarque cependant que JE NE VOIS PAS "GRANT" dans la liste desprivilèges lors de la création ou de lamise àjour d'un utilisateur . Peut-être que "CREATE" devrait être ajouté à la liste? Quelqu'un a-t-il desinformations à ce sujet? -en utilisant Hostgator cPanel,mars 2016 -)
AVERTISSEMENT:
Tenter demettre àjour sans disposer de cesprivilèges [ SELECT,INSERT,UPDATE,DELETE,DROP,ALTERet GRANT ]peutentraîner problèmes lors demodifications du schéma debase de données. Ainsi,cen'est PAS recommandé de révoquer cesprivilèges. Si vous ressentez lebesoin defaire cecipour des raisons de sécurité,alors veuillez vous assurer que vous disposez d'un solide plan de sauvegardeen placeen premier,avec des sauvegardes régulières de labase de données complète qui que vous aveztesté sont valideset peuvent êtrefacilement restaurés. Un échoué lamise àniveau de labase de donnéespeutgénéralement être résolueen restaurant labase de données à une ancienne version,en accordant les autorisations appropriées,puisen laissant WordPressessaie ànouveau lamise àjour de labase de données. La restauration de labase de données le ramener à cette ancienne versionet à l'administration de WordPress les écrans détecteront alors l'ancienne versionet vouspermettront d'exécuter le commandes SQLnécessaires dessus. Laplupart desmises àjour de WordPressne changentpas le schéma,mais certains lefont. Seules lesmises àjourmajeures (de 3,7 à 3,8,pour exemple)modifiera le schéma. Lesmises àniveaumineures (3.8 à 3.8.1) généralementpas. Néanmoins,gardez une sauvegarde régulière.Regarding the "Note" in redburn's post, the Wordpress Codex also has a Warning you should also read about updates and database schema changes...
(Edit: I notice however that I DO NOT SEE "GRANT" in the list of privileges anymore when creating or updating a user. Perhaps "CREATE" should be added to the list? Does anyone have information regarding this? -- using Hostgator cPanel, March 2016 --)
WARNING:
Attempting updates without having these privileges [SELECT, INSERT, UPDATE, DELETE, DROP, ALTER, and GRANT] can cause problems when database schema changes occur. Thus, it is NOT recommended to revoke these privileges. If you do feel the need to do this for security reasons, then please make sure that you have a solid backup plan in place first, with regular whole database backups which you have tested are valid and that can be easily restored. A failed database upgrade can usually be solved by restoring the database back to an old version, granting the proper permissions, and then letting WordPress try the database update again. Restoring the database will return it back to that old version and the WordPress administration screens will then detect the old version and allow you to run the necessary SQL commands on it. Most WordPress upgrades do not change the schema, but some do. Only major point upgrades (3.7 to 3.8, for example) will alter the schema. Minor upgrades (3.8 to 3.8.1) will generally not. Nevertheless, keep a regular backup. -
- 2018-10-08
Mon opinionest lamême que @EAMann ci-dessus,ainsi que les sources qu'il a référencées: GRANT ALLestnécessairepour s'assurer que votre siteestfonctionnelet à l'épreuve dutemps. Même sur un site deproduction,vous devezessayer de vousen tenir aumanuel d'utilisation.
Entant quepersonne qui contribue au code dunoyau WordPresset à quelquesplug-ins,je vous recommande de conserver lesprivilèges DBpar défaut comme suggéré dans lemanuel de l'utilisateur (GRANT ALL PRIVILEGES ON wpdatabasename. * TO "wordpressusername" @ "hostname").
Le code source WordPress (présentet futur) suppose que l'utilisateur de labase de données WordPress dispose detous lesprivilèges debase de donnéespour labase de données WordPress donnée. Si votre configurationmanque desprivilèges DB,vouspouvez rencontrer desproblèmes lors de lamise àniveau de WordPresset de l'ajout deplug-ins.
Vousne devriez donc vraimentpas utiliser desprivilèges DB différents desprivilèges DBpar défaut recommandéspar lemanuel,àmoins que vousne sachiez ce que vousfaites,que vous ayez desbesoinstrès spécifiqueset que vousn'oublierezpas vosprivilèges DBpersonnalisés./p>
Lapage Codex a depuis étémise àjour sur lafaçon defaire cela avec desexemples sur divers systèmeset des captures d'écran. https://codex.wordpress.org/Installing_WordPress#Stepabase_2:_Create_the_Database_2:_Create_the >
Création d'unnom debase de donnéeset d'un utilisateur (via PHPMyAdmin): https://codex.wordpress.org/Installing_WordPress#Using_phpMyAdmin
Création d'unnomet d'un utilisateur debase de données (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
My opinion is the same as @EAMann above, as well as the sources he referenced: GRANT ALL is necessary in ensuring your site is functional and future proof. Even on a production site, you shall try stick to the user manual.
As someone who contributes code to WordPress core and a few plug-ins, I recommend you retain the default DB privileges as suggested in the user manual ( GRANT ALL PRIVILEGES ON wpdatabasename.* TO "wordpressusername"@"hostname" ).
The WordPress source code (both present and future) assumes the WordPress DB user has all DB privileges for the given WordPress database. If your setup miss any DB privileges, you may run into issues as you upgrade WordPress and add more plug-ins.
So you really shouldn't be using DB privileges different from the default DB privileges recommended by the manual, unless you know what you're doing, have very specific needs, and won't forget your have custom DB privileges.
The Codex page has since been updated on how to do this with examples on various systems and screenshots. https://codex.wordpress.org/Installing_WordPress#Step_2:_Create_the_Database_and_a_User
Creating a Databse name and user (via PHPMyAdmin): https://codex.wordpress.org/Installing_WordPress#Using_phpMyAdmin
Creating a Databse name and user (via MySQL command line client): 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
Labrèveinstruction d'installation de WordPress ( "5 Minutes" )indique que:
Lors de la création d'unnouveaublogprofessionnellement,je me demandais comment cela correspond à ce que la configuration desprivilèges/autorisations utilisateur de labase de données MySQLm'offre:
SELECT
,INSERT
,UPDATE
,DELETE
CREATE
,ALTER
,DROP
INDEX
LOCK TABLES
REFERENCES
CREATE TEMPORARY TABLES
CREATE VIEW
SHOW VIEW
CREATE ROUTINE
EXECUTE
ALTER ROUTINE
Je suispresque sûr quepour lestroispremiersgroupes,je les ainommés Data,Definitionet Extraici. Mais qu'enest-il des autres sous l'entrée Plus ? Normalement,je dirais qu'ilsne sontpasnécessaires,maisj'aimerais avoir un deuxième avis.