J'installe un nouveau serveur MySQL et je voudrais 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 s'en va).
Est-ce que cela fonctionnerait juste pour faire un vidage de la table des utilisateurs et ensuite la charger sur le nouveau serveur?
Y a-t-il une meilleure façon que ça?
oldserver$ mysqldump mysql > mysql.sql
newserver$ mysql mysql < mysql.sql
newserver$ mysql 'flush privileges;'
Faut le faire, n'oubliez pas d'ajouter -u $USER
et -p$PASSWORD
comme demandé
Je voudrais jeter un oeil à la Percona Toolkit. La description du pt-show-grants
l'outil dit tout ...
pt-show-grants
extrait, ordonne, puis imprime les subventions pour les comptes d'utilisateurs MySQL.Pourquoi voudriez-vous cela? Il existe plusieurs raisons.
La première consiste à répliquer facilement les utilisateurs d'un serveur à un autre; vous pouvez simplement extraire les subventions du premier serveur et diriger la sortie directement vers un autre serveur.
La deuxième utilisation consiste à placer vos subventions dans le contrôle de version ....
Alors qu'un vidage de la base de données mysql
fonctionnerait probablement, d'après mon expérience, documenter correctement tous les accès et les reconstituer avec les instructions GRANT
est bien mieux. Il y a deux avantages à procéder de cette façon:
La réponse acceptée (en utilisant mysqldump pour sauvegarder la table mysql.user) est une approche très dangereuse si vous migrez vers une nouvelle version de serveur.
Je l'ai fait dans le passé (migration des utilisateurs de Mysql 4 vers Mysql 5.1), et plus tard, j'ai eu des problèmes pour accorder ou modifier des privilèges à mes utilisateurs de base de données.
Cela se produit car la structure de la table mysql.users diffère entre les versions du serveur mysql, comme expliqué ici:
https://dba.stackexchange.com/a/16441/18472
Alors, faites attention si vous mettez à niveau votre version de serveur. Quelques conseils supplémentaires ici:
Cela a déjà été résolu ici Comment puis-je exporter les privilèges de MySQL puis les importer sur un nouveau serveur?
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. Assurez-vous d'arrêter mysql sur le nouveau serveur, de déplacer l'ancien répertoire, de copier le répertoire et de redémarrer. Un exemple utilisant des 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
il est si simple d'exécuter des commandes grant. C'est comme
DONNER TOUT sur database.table à "utilisateur" @ "Hôte" identifié par "mot de passe"
donc
DONNER TOUT sur la base de données. * À "jack" @ "localhost" identifié par "somepass"