GNU/Linux >> Tutoriels Linux >  >> Linux

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

Solution 1 :

Ne plaisante pas avec la base de données mysql. Il s'y passe bien plus que la simple table des utilisateurs. Votre meilleur pari est la commande "AFFICHER LES SUBVENTIONS POUR". J'ai beaucoup d'alias et de fonctions de maintenance CLI dans mon .bashrc (en fait mes .bash_aliases que je source dans mon .bashrc). Cette fonction :

mygrants()
{
  mysql -B -N [email protected] -e "SELECT DISTINCT CONCAT(
    'SHOW GRANTS FOR \'', user, '\'@\'', host, '\';'
    ) AS query FROM mysql.user" | \
  mysql [email protected] | \
  sed 's/\(GRANT .*\)/\1;/;s/^\(Grants for .*\)/## \1 ##/;/##/{x;p;x;}'
}

La première commande mysql utilise SQL pour générer du SQL valide qui est redirigé vers la deuxième commande mysql. La sortie est ensuite redirigée vers sed pour ajouter de jolis commentaires.

L'[email protected] dans la commande vous permettra de l'appeler comme suit :mygrants --host=prod-db1 --user=admin --password=secret

Vous pouvez utiliser votre kit d'outils Unix complet comme ceci :

mygrants --host=prod-db1 --user=admin --password=secret | grep rails_admin | mysql --host=staging-db1 --user=admin --password=secret

C'est LA bonne façon de déplacer les utilisateurs. Votre ACL MySQL est modifiée avec du SQL pur.

Solution 2 :

Il existe deux méthodes pour extraire les subventions SQL d'une instance MySQL

MÉTHODE #1

Vous pouvez utiliser pt-show-grants de Percona Toolkit

MYSQL_CONN="-uroot -ppassword"
pt-show-grants ${MYSQL_CONN} > MySQLUserGrants.sql

MÉTHODE #2

Vous pouvez émuler pt-show-grants avec ce qui suit

MYSQL_CONN="-uroot -ppassword"
mysql ${MYSQL_CONN} --skip-column-names -A -e"SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user WHERE user<>''" | mysql ${MYSQL_CONN} --skip-column-names -A | sed 's/$/;/g' > MySQLUserGrants.sql

L'une ou l'autre méthode produira un vidage SQL pur des subventions MySQL. Il ne reste plus qu'à exécuter le script sur un nouveau serveur :

mysql -uroot -p -A < MySQLUserGrants.sql

Essayez-le !!!

Solution 3 :

La réponse de Richard Bronosky m'a été extrêmement utile. Merci beaucoup !!!

Voici une petite variante qui m'a été utile. Il est utile pour transférer des utilisateurs, par ex. entre deux installations Ubuntu exécutant phpmyadmin. Videz simplement les privilèges de tous les utilisateurs à l'exception de root, phpmyadmin et debian-sys-maint. Le code est alors

mygrants()
{
mysql -B -N [email protected] -e "SELECT DISTINCT CONCAT(
'SHOW GRANTS FOR ''', user, '''@''', host, ''';'
) AS query FROM mysql.user WHERE user NOT IN ('root','phpmyadmin','debian-sys-maint')"  | \
mysql [email protected] | \
sed 's/\(GRANT .*\)/\1;/;s/^\(Grants for .*\)/## \1 ##/;/##/{x;p;x;}'
}

Solution 4 :

Ou, utilisez percona-toolkit (ancien maatkit) et utilisez pt-show-grants (ou mk-show-grants ) Dans ce but. Pas besoin de scripts encombrants et/ou de procédures stockées.

Solution 5 :

Vous pouvez mysqldumper la base de données 'mysql' et l'importer dans la nouvelle; un flush_privileges ou un redémarrage sera nécessaire et vous voudrez certainement d'abord sauvegarder la base de données mysq existante.

Pour éviter de supprimer vos privilèges existants, assurez-vous d'ajouter plutôt que de remplacer des lignes dans les tables de privilèges (db, columns_priv, host, func, etc.).


Linux
  1. Comment ajouter un nouvel utilisateur MySQL et accorder des privilèges d'accès

  2. Comment exporter et importer des paramètres DNS dans CloudFlare

  3. Comment télécharger un fichier à partir d'un serveur FTP, puis le supprimer automatiquement du serveur une fois le téléchargement terminé ?

  4. Comment importer une base de données d'exportation dans MYSQL MariaDB

  5. Comment forcer Linux à réacquérir une nouvelle adresse IP auprès du serveur DHCP ?

Comment exporter et importer des machines virtuelles VirtualBox

Comment obtenir les meilleures performances du serveur Nginx

Comment installer Nginx, MySQL et PHP (LEMP) sur un serveur Ubuntu 15.04

Comment importer une exportation de machine virtuelle sur Windows Server 2012

Comment installer et utiliser MySQL Workbench sur Ubuntu 18.04

Comment puis-je obtenir des messages de journal du serveur LAMP sur Ubuntu 10.04 ?