5.5.2. mysql_upgrade — Check Tables for MySQL Upgrade
mysql_upgrade should be executed each
time you upgrade MySQL. It checks all tables in all
databases for incompatibilities with the current version of
MySQL Server. If a table is found to have a possible
incompatibility, it is checked. If any problems are found,
the table is repaired. mysql_upgrade also
upgrades the system tables so that you can take advantage of
new privileges or capabilities that might have been added.
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 if all tables have
been checked for this release so that table-checking can be
skipped. To ignore this file, use the
--force
option.
To check and repair tables and to upgrade the system tables,
mysql_upgrade executes the following
commands:
mysqlcheck --check-upgrade --all-databases --auto-repair
mysql_fix_privilege_tables
mysql_upgrade currently works only on
Unix. On Windows, you can execute the
mysqlcheck command manually, and then
upgrade your system tables as described in
Section 5.5.1, “mysql_fix_privilege_tables — Upgrade MySQL System Tables”.
For details about what is checked, see the description of
the FOR UPGRADE
option of the
CHECK TABLE
statement (see
Section 13.5.2.3, “CHECK TABLE
Syntax”).
To use mysql_upgrade, make sure that the
server is running, and then invoke it like this:
shell> mysql_upgrade [options
]
mysql_upgrade reads options from the
command line and fromm the [mysqld]
and
[mysql_upgrade]
groups in option files.
It supports the following options:
-
--basedir=path
The path to the MySQL installation directory.
-
--datadir=path
The path to the data directory.
-
--force
Force execution of mysqlcheck even if
mysql_upgrade has already been
executed for the current version of MySQL. (In other
words, this option causes the
mysql_upgrade.info
file to be
ignored.)
-
--user=user_name
,
-u user_name
The MySQL username to use when connecting to the server.
The default username is root
.
-
--verbose
Verbose mode. Print more information about what the
program does.
Other options are passed to mysqlcheck
and to mysql_fix_privilege_tables. For
example, it might be necessary to specify the
--password[=password
]
option.
mysql_upgrade was added in MySQL 5.1.7.
It supersedes the older
mysql_fix_privilege_tables script.