Déplacer MySQL/Windows vers la même version de MySQL/Linux
Vous pouvez mysqldump toutes les bases de données comme suit :
C:\> mysqldump -uroot -p --routines --triggers --flush-privileges --all-databases > MySQLData.sql
Déplacer MySQLData.sql
vers la boîte Linux et lancez le rechargement
mysql -uroot -p < MySQLData.sql
Déplacer MySQL/Windows vers une version supérieure de MySQL/Linux
Vous pouvez mysqldump toutes les bases de données SAUF LE SCHEMA mysql !!! Pourquoi ?
- MySQL dispose des autorisations pour l'utilisateur dans une table principale appelée
mysql.user
. - Pour chaque version majeure de MySQL,
mysql.user
a le nombre de colonnes suivant :- 43 colonnes dans MySQL 5.6
- 42 colonnes dans MySQL 5.5
- 39 colonnes dans MySQL 5.1
- 37 colonnes dans MySQL 5.0
- 31 colonnes dans MySQL 4.0/4.1
- J'ai discuté de
mysql.user
la disposition des colonnes avantMay 01, 2013
:Puis-je savoir quelle version de MySQL à partir des fichiers de données ?Dec 24, 2012
:Sauvegarder et restaurer la base de données "mysql"Jun 13, 2012
:Le moyen le plus rapide de déplacer une base de données d'un serveur à un autreFeb 08, 2012
:la réplication du serveur 5.5.20 vers 5.0.XX fonctionnera-t-elle ?
Voici un script Windows Batch pour mysqldump toutes les bases de données à l'exception du schéma mysql, puis vider le schéma mysql en SQL pur :
rem
rem Startup Settings
rem
set MYSQL_CONN=-uroot -prootpassword
set MYSQLDUMP_OUTPUT=C:\LocalDump.sql
set MYSQL_USERGRANTS=C:\LocalGrants.sql
set MYSQL_TEMPGRANTS=C:\TempGrants.sql
rem
rem Get MySQL User Data
rem
set MYSQLDUMP_OPTIONS=--routines --triggers --databases
set SQLSTMT=SELECT CONCAT('mysqldump %MYSQL_CONN% %MYSQLDUMP_OPTIONS% ',DBList)
set SQLSTMT=%SQLSTMT% FROM (SELECT GROUP_CONCAT(schema_name SEPARATOR ' ') DBList
set SQLSTMT=%SQLSTMT% FROM information_schema.schemata WHERE schema_name NOT IN
set SQLSTMT=%SQLSTMT% ('information_schema','mysql','performance_schema')) A
echo echo off > C:\RunLocalDump.bat
mysql %MYSQL_CONN% -ANe"%SQLSTMT%" >> C:\RunLocalDump.bat
C:\RunLocalDump.bat > %MYSQLDUMP_OUTPUT%
rem
rem Get MySQL User Grants
rem
set SQLSTMT=SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';')
set SQLSTMT=%SQLSTMT% FROM mysql.user WHERE LENGTH(user)
echo %SQLSTMT%
mysql %MYSQL_CONN% -ANe"%SQLSTMT%" > %MYSQL_TEMPGRANTS%
mysql %MYSQL_CONN% -AN < %MYSQL_TEMPGRANTS% > %MYSQL_USERGRANTS%
del %MYSQL_TEMPGRANTS%
Une fois que vous avez créé mysqldump et le fichier Grants, copiez-les simplement sur le serveur Linux et exécutez-les localement. Exécutez d'abord mysqldump. Ensuite, chargez les subventions.