Configuration Notes

Packaging Notes

Microsoft Windows:Reminder: MySQL 5.5 requires the Microsoft
Visual C++ 2008 Redistributable Package to run on Windows
platforms. Users should make sure the package has been installed
on the system before starting the server. The package is
available at the
Microsoft
Download Center.

Security Notes

The mysql_options() C API
function now supports a MYSQL_OPT_SSL_MODE
option. The only permitted option value is
SSL_MODE_REQUIRED, to require an encrypted
connection to the server. It causes
mysql_real_connect() to fail if
an encrypted connection cannot be obtained, without falling back
to an unencrypted connection. Thus,
mysql_real_connect() returns an
error if the server does not support SSL or the client is not
configured to use SSL. The client/server exchange terminates
immediately after the initial server packet has been received if
the server indicates that it does not support SSL.

To require an encrypted connection in MySQL 5.5,
the standard MySQL client programs call
mysql_options() to set
MYSQL_OPT_SSL_MODE if the
--ssl-mode=REQUIRED command-line
option was specified. Third-party applications that must be able
to require encrypted connections can use the same technique. For
details, see mysql_ssl_set().

The minor C API version number was not incremented for this
change. Application programs compiled for MySQL 5.5
that require MYSQL_OPT_SSL_MODE may fail to
operate properly if the dynamic loader provides an older client
library without MYSQL_OPT_SSL_MODE. Such
applications must be written to handle this possibility by
checking whether the
mysql_options() call succeeds or
fails.
(Bug #25575605)

Thread Pool Notes

To improve thread_pool plugin performance,
connection authentication and initialization have been moved
from the acceptor thread to the thread pool worker threads that
handle client connections. This enables the acceptor thread to
handle new connections at a higher rate with reduced latency.
The INFORMATION_SCHEMATP_THREAD_GROUP_STATE table now
contains a CONNECT_THREAD_COUNT column that
indicates the number of threads that are processing or waiting
to process connection initialization and authentication. There
can be a maximum of four connection threads per thread group;
these threads expire after a period of inactivity.
(Bug #17159742)

Platform-Specific Notes

Oracle Linux 5, Red Hat Enterprise Linux 5, and CentOS
5: This is the last release in the MySQL
5.5 series to support Oracle Linux 5, Red Hat
Enterprise Linux 5, and CentOS 5. As per the MySQL Support
Lifecycle policy regarding ending support for OS versions that
are obsolete or have reached end of life, we plan to discontinue
building binaries for those Linux distributions in future
releases. Moreover, we plan to build the generic Linux tarballs
for the next release on Oracle Linux 6 using glibc 2.12.
(Bug #25828375)

Functionality Added or Changed

Solaris:
Solaris packages are now marked as dependent on
/bin/bash because some scripts need features
not present in the default shell /bin/sh.
(Bug #25136289)

mysql_secure_installation is more strict
about what it considers valid yes and no responses.
(Bug #13344753, Bug #62925)

Bugs Fixed

InnoDB:
A server exit on restart was caused by missing
my_thread_init() and
my_thread_exit() functions for background
threads that initialize the st_my_thread_var
structure.
(Bug #25167032)

For CREATE TABLE statements that
specified the table name with a database qualifier and included
a DATA DIRECTORY or INDEX
DIRECTORY option, an error occurred if there was no
default database.
(Bug #25514146, Bug #84861)

mysqld_safe did not check whether the
directory named by the --basedir option
existed.
(Bug #25365194)

mysqld_safe failed if the error log file
named by the --log-error option was a FIFO.
(Bug #25356221, Bug #84427)

mysqld_safe could fail if the
--datadir option value ended with a
/ character.
(Bug #25319457)

A recent change to mysqld_safe caused the
mysql.server script to be unable to start it
if the base directory was specified as an absolute path that
differed from the compiled-in default absolute path.
(Bug #25319392, Bug #84263)

For System V init scripts for RPMs, the
[mysqld] option-file section was being
ignored for some options, such as pid-file.
(Bug #25287707, Bug #84172)

mysqld_safe --no-defaults did not work
(inadvertent consequence of an earlier bug fix).
(Bug #25244898, Bug #84173)

For a client linked against libmysqlclient,
invalid memory access could occur during use of prepared
statements.
(Bug #25164932)

The fix for Bug #25088048 caused the command used by
mysqld_safe to start the MySQL server to no
longer include the mysqld path.
(Bug #25144379)

References: This issue is a regression of: Bug #25088048.

Changes made to mysqld_safe in recent MySQL
releases require the
--ledir,
--mysqld,
--mysqld-version options to
be specified on the command line; they can no longer be
specified in option files. This could cause failure of init
scripts that invoke mysqld_safe. Such scripts
now pass the value of the MYSQLD_OPTS
environment variable as the first command-line argument to
mysqld_safe, with the value set to such
command line-only mysqld_safe option values
as may be required. On platforms that use systemd, the
MYSQLD_OPTS value can be set in
/etc/sysconfig/mysqld with a line such as
this:

MYSQLD_OPTS=" --ledir=/mysqld_ledir --mysqld=my_wrapper "

The value of MYSQLD_OPTS can also include
mysqld options for
mysqld_safe to pass to
mysqld.
(Bug #24619033, Bug #82920)

For LOAD DATA used to insert data
into an updateable view, the check to verify whether a column is
actually updatable was missing.
(Bug #24595937)

A regular expression pattern match into a large string could
result in a server exit due to memory allocation failure or
integer overflow.
(Bug #24449076, Bug #24449090)

An incorrect error was reported for CREATE
TABLE statements with a large value for the
CONNECTION table option. The value is now
limited to 1024 bytes.
(Bug #24437124)

Grant tables with incorrect structure may cause problems in user
management operations. As a consequence of the fix for this, for
any operation that modifies a grant table, the server now checks
whether the table has the expected structure and produces an
error if not. mysql_upgrade must be run to
update the tables to the expected structure.
(Bug #23295423, Bug #25095876, Bug #25448037)

The QUOTE() function could
allocate excessive memory. A limit of
max_allowed_packet bytes is now
imposed and returns NULL with a warning for
attempts to allocate more.
(Bug #23195404)

When attempting to locate the data directory,
mysqld_safe incorrectly considered
$MY_BASEDIR_VERSION/var as one of the
possible locations.
(Bug #23013510, Bug #80866)

The main.log_tables-big test case could be
unstable on highly loaded hosts. Thanks to Laurynas Biveinis for
the patch.
(Bug #22874167, Bug #80607)

On non-Linux Unix systems, the mysql.server
startup script used the Linux command pidof
rather than pgrep.
(Bug #13788154, Bug #64342)

Starting multiple instances of mysqld_safe
after an abnormal server exit could result in one
mysqld_safe instance killing another. As a
consequence of the bug fix, the
mysqld_safe.pid file is no longer used.
(Bug #11751149, Bug #41908)

The bounds check for the XML parser position stack for each
level (which has a fixed depth) used the size of the array as
the upper limit, and so was off by one. This is fixed by
decreasing the allowable depth by one, which actually matches
the maximum number of elements in the position stack.
(Bug #83871, Bug #25111907)