39 votes

Comment copier la table MySQL users d'un serveur à l'autre ?

Je suis en train de mettre en place un nouveau serveur MySQL et j'aimerais lui donner le même ensemble de noms d'utilisateurs, d'hôtes autorisés et de mots de passe qu'un serveur existant (qui va être supprimé).

Est-il possible de faire un dumping de la table des utilisateurs et de la charger ensuite sur le nouveau serveur ?

Existe-t-il une meilleure solution que celle-là ?

31voto

Dave Cheney Points 18132
oldserver$ mysqldump mysql > mysql.sql
newserver$ mysql mysql < mysql.sql
newserver$ mysql 'flush privileges;'

Cela devrait être le cas, mais n'oubliez pas d'ajouter -u $USER y -p$PASSWORD selon les besoins

22voto

Aaron Bush Points 399

Je jetterais un coup d'œil à la Boîte à outils Percona . La description de la pt-show-grants l'outil dit tout...

pt-show-grants extrait, ordonne et puis imprime les subventions pour les comptes d'utilisateurs MySQL.

Pourquoi voulez-vous cela ? Il y a plusieurs plusieurs raisons.

La première consiste à faciliter l d'un site simplement extraire les subventions du serveur premier serveur et d'acheminer la sortie directement dans un autre serveur.

La deuxième utilisation est en contrôle de version....

13voto

ashwnacharya Points 3144

Alors qu'une décharge de la mysql fonctionnerait probablement, d'après mon expérience, en documentant correctement tous les accès et en les recréant avec la base de données GRANT est bien meilleure. Cette méthode présente deux avantages :

  1. Vous comprendrez la sécurité de votre base de données et la manière dont elle est mise en œuvre.
  2. Vous pourrez supprimer les accès qui ne sont plus nécessaires.

11voto

abu Points 211

La réponse acceptée (utiliser mysqldump pour sauvegarder la table mysql.user) est une approche très dangereuse si vous migrez vers une nouvelle version du serveur.

Je l'ai fait dans le passé (migration d'utilisateurs de Mysql 4 vers Mysql 5.1), et par la suite j'ai eu des problèmes en essayant d'accorder ou de modifier des privilèges aux utilisateurs de ma base de données.

Cela est dû au fait que la structure de la table mysql.users diffère d'une version du serveur mysql à l'autre, comme expliqué ici :

https://dba.stackexchange.com/a/16441/18472

Faites donc attention si vous mettez à jour la version de votre serveur. Quelques conseils supplémentaires ici :

https://stackoverflow.com/a/13218162/710788

5voto

cole Points 341

Mysqldump fonctionnera, mais comme la base de données mysql utilise ISAM, vous pouvez simplement copier le répertoire sur le nouveau serveur. Vous le trouverez à différents endroits, mais l'emplacement le plus courant pour la base de données mysql sera /var/lib/mysql/mysql. Veillez à arrêter mysql sur le nouveau serveur, à déplacer l'ancien répertoire, à copier le répertoire et à redémarrer. Exemple utilisant les emplacements standard en tant que root :

# /etc/init.d/mysqld stop
# cd /var/lib/mysql
# mv mysql ../mysql.backup
# rsync -a root@oldserver:/var/lib/mysql/mysql .
# /etc/init.d/mysql start

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X