99 votes

Comment puis-je exporter les privilèges de MySQL et les importer ensuite sur un nouveau serveur ?

Je sais comment exporter/importer les bases de données à l'aide de mysqldump & c'est bien mais comment obtenir les privilèges dans le nouveau serveur.

Pour les points supplémentaires, il ya un couple de bases de données existantes sur le nouveau déjà, comment puis-je importer les privilèges des anciens serveurs sans nuking le couple existant de ceux.

Ancien serveur : 5.0.67-communauté

Nouveau serveur : 5.0.51a-24+lenny1

EDIT : J'ai un dump du db 'mysql' de l'ancien serveur et je veux maintenant savoir comment le fusionner avec le db 'mysql' du nouveau serveur.

J'ai essayé d'importer directement des données à l'aide de phpMyAdmin et je me suis retrouvé avec une erreur concernant un doublon (que j'ai déjà migré manuellement).

Quelqu'un connaît-il un moyen élégant de fusionner les deux bases de données 'mysql' ?

0 votes

1. L'utilisation de PHPMyAdmin est-elle une obligation pour vous ? Si c'est le cas, je vais écrire des instructions spécifiques à PHPMyAdmin pour vous. 2. Depuis PHPMyAdmin, si vous essayez de "select * from mysql.user limit 1 ;", obtenez-vous des résultats ou une erreur ?

1 votes

Comme je l'ai mentionné ci-dessous, je pense que mygrants script de Richard est un bon moyen d'obtenir des informations sur les subventions. Cependant, vous pouvez également essayer de modifier le fichier de vidage pour commenter les INSERTS de la table des utilisateurs pour les utilisateurs qui existent déjà. Les privilèges des bases de données restaurées à partir de l'ancien serveur seront alors copiés. Si vous avez déjà attribué manuellement des privilèges pour certains des bases de données que vous avez restaurées sur le nouveau serveur, recherchez les noms de ces tables dans les fichiers de privilèges et commentez-les également. N'oubliez pas de faire un flush_privileges par la suite. Bonne description de la base de données mysql : grahamwideman.com/gw/tech/mysql/perms/index.htm

0voto

Otheus Points 402

Un défi souvent rencontré avec certaines des réponses Shell et basées sur la ligne de commande ici est d'essayer de les exécuter sur un serveur distant -- le niveau d'échappement de tous les ticks et doubles-quotes et backslashes devient insensé. Voici une façon de le faire, à partir de la ligne de commande sur un serveur distant :

cat  << EOQ | ssh $REMOTE_SERVER 'mysql -B -N  mysql | mysql -B -N ' | mysql 
 SELECT CONCAT('show grants for \'', user,'\'@\'', host, '\'\;') FROM user WHERE user != 'root' AND user != ''
EOQ

Cette commande se connecte au serveur distant à distance (ici, nous supposons que les mots de passe ne sont pas nécessaires avec les clés ssh et les configurations mysql/my.cnf/client), exécute la requête qui génère le fichier show grants une deuxième exécution mysql exécute les commandes générées, et la dernière mysql du pipeline est exécutée sur le serveur local qui applique ces commandes. show grants sur le serveur local.

L'utilisateur "root" n'est pas copié pour des raisons de sécurité.

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