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?
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
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.
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.
Processus complet pour moi lors de la migration d'un environnement de développement Mac OS X vers un nouvel environnement.
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/
# 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
$ mysqldump -uroot --flush-privileges --routines --all-databases > complete_dump.sql
$ mysql -p -uroot < complete_dump.sql