Verschieben von MySQL/Windows auf dieselbe Version von MySQL/Linux
Sie können alle Datenbanken wie folgt mysqldump erstellen:
C:\> mysqldump -uroot -p --routines --triggers --flush-privileges --all-databases > MySQLData.sql
Verschieben Sie MySQLData.sql
in die Linux-Box und führen Sie das Neuladen durch
mysql -uroot -p < MySQLData.sql
Verschieben von MySQL/Windows auf eine höhere Version von MySQL/Linux
Sie können alle Datenbanken mit Ausnahme des mysql-Schemas mysqldumpen!!! Warum?
- MySQL hat die Berechtigungen für den Benutzer in einer Haupttabelle namens
mysql.user
. - Für jede Hauptversion von MySQL,
mysql.user
hat die folgende Anzahl von Spalten:- 43 Spalten in MySQL 5.6
- 42 Spalten in MySQL 5.5
- 39 Spalten in MySQL 5.1
- 37 Spalten in MySQL 5.0
- 31 Spalten in MySQL 4.0/4.1
- Ich habe
mysql.user
besprochen Spaltenanordnung von vorMay 01, 2013
:Kann ich aus den Datendateien herausfinden, welche Version von MySQL?Dec 24, 2012
:Sichern und Wiederherstellen der "mysql"-DatenbankJun 13, 2012
:Der schnellste Weg, eine Datenbank von einem Server auf einen anderen zu verschiebenFeb 08, 2012
:funktioniert die Replikation von 5.5.20 auf 5.0.XX Server?
Hier ist ein Windows-Stapelskript zum mysqldumping aller Datenbanken außer dem mysql-Schema und dann zum dumpen des mysql-Schemas in reinem SQL:
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%
Nachdem Sie mysqldump und die Grants-Datei erstellt haben, kopieren Sie sie einfach auf den Linux-Server und führen Sie sie lokal aus. Führen Sie zuerst mysqldump aus. Laden Sie dann die Zuschüsse.