Envoyé par:
Pourbaix Michel
(---.209-177-91.adsl-dyn.isp.belgacom.be)
Date: 14 December 2009 à 15:29
Bonjour ,
J'ai consulté les discussions concernant l'export/import des bases de données sur ce forum mais j'ai encore deux questions sans réponse:
1) Une base de données Mysql simple avec 2 tables
Je fais un copier/coller du dossier de cette base (répertoire mysql5.1.33/data/) d'une machine A vers une machine B (meme répertoire)
Le problème : PhpMyAdmin m'indique que ma base existe avec le chiffre 2 à côté de son nom mais il m'indique aussi que cette base ne comporte aucune table POURQUOI?
Je sais que l'on peut utiliser L'export/import de PhpMyAdmin ainsi que la commande mysqldump (ce que j'ai testé avec succès)
mais j'ai vu que l'on pouvait aussi pratiquer comme ci-dessus
2) Comment faire une copie complète de toutes les bases sur un nouvel ordinateur
MAIS EN CONSERVANT TOUTE LA STRUCUTURE DES UTILISATEURS ET DES PRIVILEGES ,
Les deux machines sont équipées de la meme façcon avec WAMPSERVER 2.0
Lorsqu'une base est créée, cela modifie certaine(s) table(s) du répertoire mysql5.1.33/data/mysql.
Donc ne copier *que* le répertoire contenant la base à transférer ne suffit pas. Mais pour autant, copier le répertoire data/mysql risque d'écraser des infos sur la machine d'arrivée.
Je suppose qu'un export/import est mieux indiqué que la copie par répertoire. D'autant que s'ajoute un léger détail : si les droits des utilisateurs définis le sont pour un nom de machine donné, il faudra les redéfinir sur la machine B. Avec le risque de ne pas pouvoir se connecter.
Bref, comme disait l'autre, ça dépend de beaucoup d'éléments...
(Voilà comment répondre à un message sans apporter la moindre solution... )
Envoyé par:
Pourbaix Michel
(---.213-177-91.adsl-dyn.isp.belgacom.be)
Date: 15 December 2009 à 11:37
Merci pour ta réponse Nicolas,
Le point 1 me semble solutionné , il faut passer par export/import ou mysqldump.
En ce qui concerne le point 2 : USER et PRIVILEGES ,
il est difficilement concevable qu'il faille redéfinir manuellement tous les utilisateurs et tous les privilèges sur les bases lors d'une importation sur une nouvelle machine
Je suis donc toujours preneur d'une solution à ce sujet ,si elle existe ....
Déplacer les bases de données n'a rien d'une procédure complexe : Un dossier complet à déplacer et une ligne à modifier dans un fichier. De plus, en procédant de la sorte, on n'a plus à se soucier des users et privilèges ; juste une ligne à modifier dans my.ini à chaque évolution de version de MySQL.
Pour les users et privilèges voici ce qui avait fonctionné correctement chez moi AVANT que je ne déplace les bases de données.
- Quitter Wampserver. - Copier les fichiers : wamp/bin/mysql/mysql_ancienne_version/data/mysql/user.* vers wamp/bin/mysql/mysql_nouvelle_version/data/mysql/user.* en écrasant les fichiers destination.
Les utilisateurs et privilèges sont définis dans la table user de la base de données mysql, qui est totalement indépendante des autres bases. Voir [forum.wampserver.com]
Envoyé par:
Pourbaix Michel
(---.193-177-91.adsl-dyn.isp.belgacom.be)
Date: 17 December 2009 à 16:24
OK, je suis parfaitement d'accord avec ton analyse.
D'ailleurs , j'ai relu attentivement ton exposé MAIS ici, je me suis sans doute mal exprimé, je ne parle pas de
privilèges GLOBAUX
mais d'une structure avec des privilèges par base, table , par colonnes , .... pour des utilisateurs définis sur une machine A et qui n'existent pas sur une machine B.
Raison pour laquelle , j'ai développé la petite solution propoée ci-desssus.
Dans ce cas, comme tu le dis dans ton exposé, d'autres tables que la table USER sont concernées ds mysql
La hiérarchie des autorisations
Un privilège change de portée selon le niveau auquel il est accordé. MySQL définit quatre niveaux de privilège : - niveau global (privilèges renseignés dans la table user de la base mysql) ; - niveau base de données (table db); - niveau table (table tables_priv) ou routine (procs_priv) - niveau colonne (table columns_priv)
Alors , pour transférer tout çà d'une machine à l'autre sans devoir tout redéfinir ?
Après avoir fait des essais de création, via PhpMyAdmin, d'utilisateurs ayant des privilèges très restreints, du genre uniquement UPDATE sur une seule colonne d'une seule table d'une seule base de données, je pense pouvoir dire que la gestion de ces privilèges « spéciaux » est définie par les tables :
- db - table_priv - columns_priv - procs_priv - user
de la base mysql.
Donc, en recopiant les fichiers db.*, table_priv.*, columns_priv.*, procs.priv.* et user.* du dossier wamp/bin/mysql/mysql5.1.x/data/mysql/ d'origine vers le nouveau, on devrait retrouver les utilisateurs et leurs privilèges spécifiques.
Envoyé par:
Pourbaix Michel
(---.214-177-91.adsl-dyn.isp.belgacom.be)
Date: 18 December 2009 à 13:23
Je te remercie de ton obstination
Je pense que tu as raison concernant les tables mentionnées (J'ai obtenu le même genre de réponse sur un autre site)
Maintenant , il faut tester... mais j'ai un peu peur que l'écrasement de tables aussi importantes sur la machine de destination ne porte péjudice à l'architecture de WAMP
Enfin comme tu as l'air sûr de toi....
De toute manière, merci pour les explications , à bientôt