MYSQL_UPGRADE(1)
NAME
mysql_upgrade - check tables for MySQL upgrade
SYNOPSIS
mysql_upgrade [options]
DESCRIPTION
mysql_upgrade examines all tables in all databases for
incompatibilities with the current version of MySQL Server.
mysql_upgrade also upgrades the system tables so that you can take
advantage of new privileges or capabilities that might have been added.
mysql_upgrade should be executed each time you upgrade MySQL. It
supersedes the older mysql_fix_privilege_tables script, which should no
longer be used.
- If a table is found to have a possible incompatibility, mysql_upgrade
performs a table check. If any problems are found, a table repair is
attempted. If the table cannot be repaired, see Section 2.4.4,
"Rebuilding or Repairing Tables or Indexes" for manual table repair
strategies. - Note
On Windows Server 2008 and Windows Vista, you must run
mysql_upgrade with administrator privileges. You can do this by running a Command Prompt as Administrator and running the command. Failure to do so may result in the upgrade failing to execute
correctly. - Caution
You should always back up your current MySQL installation before performing an upgrade. See Section 6.2, "Database Backup Methods". - Some upgrade incompatibilities may require special handling before
you upgrade your MySQL installation and run mysql_upgrade. See
Section 2.4.1, "Upgrading MySQL", for instructions on determining
whether any such incompatibilities apply to your installation and
how to handle them. - To use mysql_upgrade, make sure that the server is running, and then invoke it like this:
shell> mysql_upgrade [options]- After running mysql_upgrade, stop the server and restart it so that any changes made to the system tables take effect.
- mysql_upgrade executes the following commands to check and repair tables and to upgrade the system tables:
mysqlcheck --all-databases --check-upgrade --auto-repair
mysql < fix_priv_tables
mysqlcheck --all-databases --check-upgrade --fix-db-names --fix-table-names- Notes about the preceding commands:
- o Because mysql_upgrade invokes mysqlcheck with the --all-databases
- option, it processes all tables in all databases, which might take
a long time to complete. Each table is locked and therefore
unavailable to other sessions while it is being processed. Check
and repair operations can be time-consuming, particularly for large tables. - o For details about what checks the --check-upgrade option entails,
- see the description of the FOR UPGRADE option of the CHECK TABLE
statement (see Section 12.4.2.3, "CHECK TABLE Syntax"). - o fix_priv_tables represents a script generated internally by
- mysql_upgrade that contains SQL statements to upgrade the tables in the mysql database.
- o Prior to MySQL 5.1.31, mysql_upgrade does not run the second
- mysqlcheck command, which is necessary to re-encode database or
table names that contain nonalphanumeric characters. (They still
appear after the upgrade with the #mysql50# prefix described in
Section 8.2.3, "Mapping of Identifiers to File Names".) If you have such database or table names, execute the second mysqlcheck command manually after executing mysql_upgrade. - All checked and repaired tables are marked with the current MySQL
version number. This ensures that next time you run mysql_upgrade with the same version of the server, it can tell whether there is any need
to check or repair the table again. - mysql_upgrade also saves the MySQL version number in a file named
mysql_upgrade_info in the data directory. This is used to quickly check
whether all tables have been checked for this release so that
table-checking can be skipped. To ignore this file and perform the
check regardless, use the --force option. - If you install MySQL from RPM packages on Linux, you must install the
server and client RPMs. mysql_upgrade is included in the server RPM but requires the client RPM because the latter includes mysqlcheck. (See Section 2.6.1, "Installing MySQL from RPM Packages on Linux".) - In MySQL 5.1.7, mysql_upgrade was added as a shell script and worked only for Unix systems. As of MySQL 5.1.10, mysql_upgrade is an executable binary and is available on all systems.
- mysql_upgrade does not upgrade the contents of the help tables. For upgrade instructions, see Section 5.1.8, "Server-Side Help".
- mysql_upgrade supports the following options, which can be specified on
the command line or in the [mysql_upgrade] and [client] option file
groups. Other options are passed to mysqlcheck. For example, it might be necessary to specify the --password[=password] option. mysql_upgrade also supports the options for processing option files described at Section 4.2.3.3.1, "Command-Line Options that Affect
Option-File Handling". - o --help
Display a short help message and exit.- o --basedir=path
The path to the MySQL installation directory. This option is
accepted for backward compatibility but ignored.- o --datadir=path
The path to the data directory. This option is accepted for
backward compatibility but ignored.- o --debug-check
Print some debugging information when the program exits. This
option was added in MySQL 5.1.21.- o --debug-info, -T
Print debugging information and memory and CPU usage statistics
when the program exits. This option was added in MySQL 5.1.21.- o --force
Ignore the mysql_upgrade_info file and force execution of
mysqlcheck even if mysql_upgrade has already been executed for the current version of MySQL.- o --tmpdir=path, -t path
The path name of the directory to use for creating temporary files. This option was added in MySQL 5.1.25.- o --user=user_name, -u user_name
The MySQL user name to use when connecting to the server. The
default user name is root.- o --verbose
Verbose mode. Print more information about what the program does.- o --write-binlog
Cause binary logging to be enabled while mysql_upgrade runs. This is the default behavior; to disable binary logging during the
upgrade, use the inverse of this option (that is, start the program with --skip-write-binlog).- This option was introduced in MySQL 5.1.40.
COPYRIGHT
Copyright (C) 1997, 2010, Oracle and/or its affiliates. All rights
reserved.
This documentation is free software; you can redistribute it and/or
modify it only under the terms of the GNU General Public License as
published by the Free Software Foundation; version 2 of the License.
This documentation is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License along
with the program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see
http://www.gnu.org/licenses/.
SEE ALSO
For more information, please refer to the MySQL Reference Manual, which
may already be installed locally and which is also available online at
http://dev.mysql.com/doc/.
AUTHOR
- Oracle Corporation (http://dev.mysql.com/).