Date de publication: le samedi 9 juin 2007 Ă 19h38
Dernière modification: par Pascal BOYER le mercredi 6 mai 2009 à 19h38
« Article précédent: Filtre ImageMagick
» Article suivant: MySQL : sauvegarder et restaurer une base de données
Avant propos
Dans certaines circonstances, il arrive de perdre le login et/ou le mot de passe permettant l'accès à l'interface d'administration de eZ Publish . Bien que très embarrassante, cette situation n'est pas désespérée puisqu'il est tout à fait possible de réinitialiser le login et/ou le mot de passe à des valeurs par défaut connue.
La méthode présentée est celle de la ligne de commande .
Cependant, pour ceux qui ont installé phpMyAdmin , il peuvent arriver au même résultat bien plus simplement.
La table ezuser
Les mots de passe sont stockés, sous forme cryptée, dans la table ezuser de la base données créée lors de l’installation de eZ publish .
Visualisons le contenu de la table ezuser .
On commence par se connecter au serveur MySQL:
mysql -u root -p
Enter password: On tape le mot de passe de l’admin de MySQL mysql>
Comme il y a de fortes chances qu’on ne se souvienne plus du nom de la base de données utilisée par eZ publish , on commence par lister toutes les bases de données présentes:
mysql> SHOW DATABASES;
+------------------+ | Database | +------------------+ | ez_test | | ezpublish_39 | | mysql | +------------------+ 21 rows in set (0.20 sec)
On sélectionne à présent la base de données:
mysql> USE ez_test;
Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed
mysql> SHOW TABLES;
+--------------------------------+ | Tables_in_ez_test | +--------------------------------+ | audio | | audiopls | | ezapprove_items | | ezbasket | | ezbinaryfile | | ezcollab_group | | ezcollab_item | | ezcollab_item_group_link | | ezcollab_item_message_link | | ezcollab_item_participant_link | | ezcollab_item_status | | ezcollab_notification_rule | | ezcollab_profile | | ezcollab_simple_message | | ezcontent_language | | ezcontentbrowsebookmark | | ezcontentbrowserecent | | ezcontentclass | | ezcontentclass_attribute | | ezcontentclass_classgroup | | ezcontentclassgroup | | ezcontentobject | | ezcontentobject_attribute | | ezcontentobject_link | | ezcontentobject_name | | ezcontentobject_tree | | ezcontentobject_version | | ezcurrencydata | | ezdiscountrule | | ezdiscountsubrule | | ezdiscountsubrule_value | | ezenumobjectvalue | | ezenumvalue | | ezforgot_password | | ezgeneral_digest_user_settings | | ezimage | | ezimagefile | | ezimagevariation | | ezinfocollection | | ezinfocollection_attribute | | ezkeyword | | ezkeyword_attribute_link | | ezmedia | | ezmessage | | ezmodule_run | | ezmultipricedata | | eznode_assignment | | eznotificationcollection | | eznotificationcollection_item | | eznotificationevent | | ezoperation_memento | | ezorder | | ezorder_item | | ezorder_status | | ezorder_status_history | | ezpackage | | ezpaymentobject | | ezpdf_export | | ezpending_actions | | ezpolicy | | ezpolicy_limitation | | ezpolicy_limitation_value | | ezpreferences | | ezproductcategory | | ezproductcollection | | ezproductcollection_item | | ezproductcollection_item_opt | | ezrole | | ezrss_export | | ezrss_export_item | | ezrss_import | | ezsearch_object_word_link | | ezsearch_return_count | | ezsearch_search_phrase | | ezsearch_word | | ezsection | | ezsession | | ezsite_data | | ezstats | | ezsubtree_notification_rule | | eztipafriend_counter | | eztipafriend_request | | eztrigger | | ezurl | | ezurl_object_link | | ezurlalias | | ezuser | | ezuser_accountkey | | ezuser_discountrule | | ezuser_role | | ezuser_setting | | ezuservisit | | ezvatrule | | ezvatrule_product_category | | ezvattype | | ezview_counter | | ezwaituntildatevalue | | ezwishlist | | ezworkflow | | ezworkflow_assign | | ezworkflow_event | | ezworkflow_group | | ezworkflow_group_link | | ezworkflow_process | +--------------------------------+ 104 rows in set (0.06 sec)
...et oui, il en a 104 !
Pour afficher la structure de la table ezuser c’est à dire les caractéristiques des champs de cette table:
mysql> DESCRIBE ezuser;
+--------------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------------+--------------+------+-----+---------+-------+ | contentobject_id | int(11) | | PRI | 0 | | | email | varchar(150) | | | | | | login | varchar(150) | | | | | | password_hash | varchar(50) | YES | | NULL | | | password_hash_type | int(11) | | | 1 | | +--------------------+--------------+------+-----+---------+-------+ 5 rows in set (0.00 sec)
Et pour visualiser le contenu de ces champs:
mysql> SELECT * FROM ezuser;
+------------------+-----------------------+------------------+----------------------------------+--------------------+ | contentobject_id | email | login | password_hash | password_hash_type | +------------------+-----------------------+------------------+----------------------------------+--------------------+ | 10 | nospam@ez.no | anonymous | 4e6f6184135228ccd45f8233d72a0363 | 2 | | 14 | | | 6b4827b8eac5759e2e181bcab32bbb47 | 2 | +------------------+-----------------------+------------------+----------------------------------+--------------------+ 2 rows in set (0.00 sec)
Le fichier db_data.dba
Pour retrouver la valeur de ce hashage:
cd /usr/local/www/monsite/share
grep -A40 "ezuser" db_data.dba |grep -B2 -A2 "admin"
0 => '14', 1 => 'nospam@ez.no', 2 => 'admin', 3 => 'c78e3b0f3d9244ed8c6d1c29464bdff9', 4 => '2',
Et l’on constate immédiatement que la valeur de l’empreinte renvoyée par la commande grep ne correspond plus à celle présente dans la table ezuser , ce qui est somme toute normal puisque lors de l’installation de eZ publish il nous est demandé de définir le mot de passe de l’administrateur.
echo -n -e "admin\npublish"|md5sum
c78e3b0f3d9244ed8c6d1c29464bdff9
grep -A40 ’ezuser’ db_data.dba |grep -B2 -A2 "anonymous"
0 => '10', 1 => 'nospam@ez.no', 2 => 'anonymous', 3 => '4e6f6184135228ccd45f8233d72a0363', 4 => '2',
...on retrouve exactement les mêmes valeurs que dans le tableau ci-dessus. A condition bien sûr de ne pas avoir modifié, après l’installation de eZ publish , le mot de passe de l’utilisateur anonymous
Revenons donc Ă nos commandes MySQL...
Modifier le mot de passe
Il s’agit donc maintenant de remplacer la valeur inscrite dans la base de données par c78e3b0f3d9244ed8c6d1c29464bdff9
msql> UPDATE ezuser SET password_hash="c78e3b0f3d9244ed8c6d1c29464bdff9" WHERE contentobject_id="14";
Query OK, 1 row affected (0.21 sec) Rows matched: 1 Changed: 1 Warnings: 0
On vérifie le résultat:
mysql> SELECT * FROM ezuser;
+------------------+--------------+-----------+----------------------------------+--------------------+ | contentobject_id | email | login | password_hash | password_hash_type | +------------------+--------------+-----------+----------------------------------+--------------------+ | 10 | nospam@ez.no | anonymous | 4e6f6184135228ccd45f8233d72a0363 | 2 | | 14 | | | c78e3b0f3d9244ed8c6d1c29464bdff9 | 2 | +------------------+--------------+-----------+----------------------------------+--------------------+ 2 rows in set (0.00 sec)
Tout est parfait.
Modifier le login
Puisque dans mon exemple le login est manquant, nous allons en définir un:
mysql> UPDATE ezuser SET login="admin" WHERE contentobject_id="14";
Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0
...et on vérifie une nouvelle fois le résultat:
mysql> SELECT * FROM ezuser;
+------------------+--------------+-----------+----------------------------------+--------------------+ | contentobject_id | email | login | password_hash | password_hash_type | +------------------+--------------+-----------+----------------------------------+--------------------+ | 10 | nospam@ez.no | anonymous | 4e6f6184135228ccd45f8233d72a0363 | 2 | | 14 | | admin | c78e3b0f3d9244ed8c6d1c29464bdff9 | 2 | +------------------+--------------+-----------+----------------------------------+--------------------+ 2 rows in set (0.00 sec)
Tout est encore nickel.
Puisqu’on y est, ajoutons l’adresse mail de l’administrateur.
Modifier l’email
On prend la mĂŞme commande et on recommence:
mysql> UPDATE ezuser SET email="pascal@linuxorable.net" WHERE contentobject_id="14";
Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0
On vérifie:
mysql> SELECT * FROM ezuser;
+------------------+------------------------+-----------+----------------------------------+--------------------+ | contentobject_id | email | login | password_hash | password_hash_type | +------------------+------------------------+-----------+----------------------------------+--------------------+ | 10 | nospam@ez.no | anonymous | 4e6f6184135228ccd45f8233d72a0363 | 2 | | 14 | pascal@linuxorable.net | admin | c78e3b0f3d9244ed8c6d1c29464bdff9 | 2 | +------------------+------------------------+-----------+----------------------------------+--------------------+ 2 rows in set (0.00 sec)
...et on ferme la session:
mysql> QUIT;
Bye
Ultime test
Il ne reste plus à présent qu'à s’assurer que l’utilisateur admin peut effectivement se connecter à eZ publish avec le mot de passe publish à partir de la page de login.
Commentaires













