web-dev-qa-db-fra.com

Utiliser mysqldump et les utilisateurs de bases de données

J'essaie de rassembler toutes les options dont j'ai besoin pour que mysqldump crée tout ce qui est utilisé par ma base de données d'applications dans un seul script. Cela inclut la base de données elle-même et tous les utilisateurs/mots de passe/privilèges de la base de données.

J'ai tout compris, à l'exception de la pièce utilisateur ... voici ce que j'utilise actuellement:

mysqldump -h Host -u root -p \
    --add-drop-database --routines -B database_name > backup.sql

Alors, qu'est-ce qui me manque?

32
Bobby B

Les utilisateurs/mots de passe/privilèges de la base de données sont conservés dans la base de données mysql et ne seront pas vidés avec votre commande dump. Vous devrez également ajouter cette base de données à la liste des bases de données à vider:

mysqldump ... --routines --databases database_name mysql > backup.sql

ou tout simplement tout jeter:

mysqldump ... --routines --all-databases > backup.sql
43
Marc B

Lorsque vous videz la base de données mysql, n'oubliez pas:

 --flush-privileges  Emit a FLUSH PRIVILEGES statement after dumping the mysql
                     database.  This option should be used any time the dump
                     contains the mysql database and any other database that
                     depends on the data in the mysql database for proper
                     restore.
23
Markus T

Donc, j'ai eu un malentendu fondamental. Les utilisateurs ne sont pas spécifiques à une base de données, mais sont plutôt créés au niveau du serveur.

Vous pouvez afficher tous les utilisateurs existants avec la requête suivante:

SELECT * FROM mysql.user;

Sachant cela, il est assez évident que mysqldump ne devrait rien faire avec les utilisateurs. Cependant, si vous avez besoin d'une réponse pour exporter/importer des utilisateurs et des permanentes, je vous suggère de consulter l'article suivant - cela m'a aidé.

http://pento.net/2009/03/12/backing-up-permissions-for-individual-databases/

Je m'excuse pour le bruit sur le tableau, mais je pensais que je quitterais le poste au cas où quelqu'un d'autre aurait le même malentendu.

10
Bobby B

Processus complet pour moi lors de la migration d'un environnement de développement Mac OS X vers un nouvel environnement.

0) Débarrassez-vous de la nouvelle version de MySQL sur le nouveau MacBook

J'avais accidentellement installé MySQL 8 et j'ai donc dû le retirer car il était plus récent que mon ancien MacBook.

# Remove binaries
$ brew uninstall mysql

# Remove data/config that is leftover
$ rm -r /usr/local/var/mysql/

1) Installer la même version de MySQL sur le nouveau MacBook

# Install version that matched old MacBook
$ brew install [email protected]

# Because it is an old version, you have to do a special configuration step
$ echo 'export PATH="/usr/local/opt/[email protected]/bin:$PATH"' >> ~/.bash_profile
$ source ~/.bash_profile

# Start server
$ mysql.server start

2) Décharger des données sur un ancien MacBook

$ mysqldump -uroot --flush-privileges --routines --all-databases > complete_dump.sql

3) Restaurer les données sur le nouveau MacBook

$ mysql -p -uroot < complete_dump.sql
1
PaulMest