If you are running a version older than Version 3.20.28 and want to switch to Version 3.21, you need to do the following:
You can start the mysqld
Version 3.21 server with the
--old-protocol
option to use it with clients from a Version 3.20
distribution. In this case, the new client function mysql_errno()
will not return any server error, only CR_UNKNOWN_ERROR
(but it
works for client errors), and the server uses the old pre-3.21 password()
checking rather than the new method.
If you are not using the --old-protocol
option to
mysqld
, you will need to make the following changes:
MyODBC
2.x driver.
scripts/add_long_password
must be run to convert the
Password
field in the mysql.user
table to CHAR(16)
.
mysql.user
table (to get 62-bit
rather than 31-bit passwords).
MySQL Version 3.20.28 and above can handle the new user
table
format without affecting clients. If you have a MySQL version earlier
than Version 3.20.28, passwords will no longer work with it if you convert the
user
table. So to be safe, you should first upgrade to at least Version
3.20.28 and then upgrade to Version 3.21.
The new client code works with a 3.20.x mysqld
server, so
if you experience problems with 3.21.x, you can use the old 3.20.x server
without having to recompile the clients again.
If you are not using the --old-protocol
option to mysqld
,
old clients will be unable to connect and will issue the following error
message:
ERROR: Protocol mismatch. Server Version = 10 Client Version = 9
The new Perl DBI
/DBD
interface also supports the old
mysqlperl
interface. The only change you have to make if you use
mysqlperl
is to change the arguments to the connect()
function.
The new arguments are: host
, database
, user
,
and password
(note that the user
and password
arguments
have changed places).
See section 9.5.2 The DBI
Interface.
The following changes may affect queries in old applications:
HAVING
must now be specified before any ORDER BY
clause.
LOCATE()
have been swapped.
DATE
,
TIME
, and TIMESTAMP
.